- Adjust the tests for deferred expressions evaluation.
authorremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 1 Nov 2006 01:20:18 +0000 (01:20 +0000)
committerremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 1 Nov 2006 01:20:18 +0000 (01:20 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@469739 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/jasper/compiler/Validator.java

index 1e17f6c..9a67341 100644 (file)
@@ -664,7 +664,9 @@ class Validator {
 
             // JSP.2.2 - '#{' not allowed in template text
             if (n.getType() == '#') {
-                if (!pageInfo.isDeferredSyntaxAllowedAsLiteral()) {
+                if (!pageInfo.isDeferredSyntaxAllowedAsLiteral()
+                        && (tagInfo == null 
+                                || ((tagInfo != null) && !tagInfo.getTagLibrary().getRequiredVersion().equals("2.0")))) {
                     err.jspError(n, "jsp.error.el.template.deferred");
                 } else {
                     return;
@@ -982,9 +984,18 @@ class Validator {
                             && (attrs.getURI(i) == null
                                     || attrs.getURI(i).length() == 0 || attrs
                                     .getURI(i).equals(n.getURI()))) {
-                        if (tldAttrs[j].canBeRequestTime()
-                                || tldAttrs[j].isDeferredMethod() // JSP 2.1
-                                || tldAttrs[j].isDeferredValue()) { // JSP 2.1
+                        boolean el = true;
+                        boolean deferredValue = false;
+                        if (!tagInfo.getTagLibrary().getRequiredVersion().equals("2.0") 
+                                && attrs.getValue(i).indexOf("#{") != -1) {
+                            el = false;
+                            if (!pageInfo.isELIgnored() && !pageInfo.isDeferredSyntaxAllowedAsLiteral()) {
+                                deferredValue = true;
+                            }
+                        }
+                        if ((el && tldAttrs[j].canBeRequestTime())
+                                || (deferredValue && tldAttrs[j].isDeferredMethod()) // JSP 2.1
+                                || (deferredValue && tldAttrs[j].isDeferredValue())) { // JSP 2.1
                             Class expectedType = String.class;
                             try {
                                 String typeStr = tldAttrs[j].getTypeName();