Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=42943
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 8 May 2008 21:53:35 +0000 (21:53 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Thu, 8 May 2008 21:53:35 +0000 (21:53 +0000)
Make sure the nested element is inside a <jsp:text> element

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@654640 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/jasper/compiler/JspDocumentParser.java

index a67a3ea..d5a11bf 100644 (file)
@@ -278,8 +278,11 @@ class JspDocumentParser
             return;
         }
 
+        String currentPrefix = getPrefix(current.getQName());
+        
         // jsp:text must not have any subelements
-        if (JSP_URI.equals(uri) && TEXT_ACTION.equals(current.getLocalName())) {
+        if (JSP_URI.equals(uri) && TEXT_ACTION.equals(current.getLocalName())
+                && "jsp".equals(currentPrefix)) {
             throw new SAXParseException(
                 Localizer.getMessage("jsp.error.text.has_subelement"),
                 locator);
@@ -1175,11 +1178,7 @@ class JspDocumentParser
             }
         }
 
-        String prefix = "";
-        int colon = qName.indexOf(':');
-        if (colon != -1) {
-            prefix = qName.substring(0, colon);
-        }
+        String prefix = getPrefix(qName);
 
         Node.CustomTag ret = null;
         if (tagInfo != null) {
@@ -1366,9 +1365,8 @@ class JspDocumentParser
      */
     private void checkPrefix(String uri, String qName) {
 
-        int index = qName.indexOf(':');
-        if (index != -1) {
-            String prefix = qName.substring(0, index);
+        String prefix = getPrefix(qName);
+        if (prefix.length() > 0) {
             pageInfo.addPrefix(prefix);
             if ("jsp".equals(prefix) && !JSP_URI.equals(uri)) {
                 pageInfo.setIsJspPrefixHijacked(true);
@@ -1376,6 +1374,14 @@ class JspDocumentParser
         }
     }
 
+    private String getPrefix(String qName) {
+        int index = qName.indexOf(':');
+        if (index != -1) {
+            return qName.substring(0, index);
+        }
+        return "";
+    }
+
     /*
      * Gets SAXParser.
      *