Both TLD and web.xml determine if deferred EL syntax is treated as EL or as a literal
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 7 Mar 2010 18:45:50 +0000 (18:45 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Sun, 7 Mar 2010 18:45:50 +0000 (18:45 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@920055 13f79535-47bb-0310-9956-ffa450edef68

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

index 0f0220c..8489e55 100644 (file)
@@ -1075,11 +1075,16 @@ class Validator {
                         || (!n.getRoot().isXmlSyntax() && attrs.getValue(i).startsWith("<%=")));
                 boolean elExpression = false;
                 boolean deferred = false;
+                double libraryVersion = Double.parseDouble(
+                        tagInfo.getTagLibrary().getRequiredVersion());
+                boolean deferredSyntaxAllowedAsLiteral =
+                    pageInfo.isDeferredSyntaxAllowedAsLiteral() ||
+                    libraryVersion < 2.1;
 
                 ELNode.Nodes el = null;
                 if (!runtimeExpression && !pageInfo.isELIgnored()) {
-                    el = ELParser.parse(attrs.getValue(i), pageInfo
-                            .isDeferredSyntaxAllowedAsLiteral());
+                    el = ELParser.parse(attrs.getValue(i),
+                            deferredSyntaxAllowedAsLiteral);
                     Iterator<ELNode> nodes = el.iterator();
                     while (nodes.hasNext()) {
                         ELNode node = nodes.next();