From a1af29475a2e170e81997e48478d79307c1987ce Mon Sep 17 00:00:00 2001 From: remm Date: Thu, 26 Oct 2006 23:19:13 +0000 Subject: [PATCH] - Some deferred expressions handling fixes. git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@468186 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/jasper/compiler/Generator.java | 4 ++-- java/org/apache/jasper/compiler/JspConfig.java | 6 +++--- java/org/apache/jasper/compiler/Validator.java | 15 ++++++++------- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java index 10fccf1fb..2bb370e74 100644 --- a/java/org/apache/jasper/compiler/Generator.java +++ b/java/org/apache/jasper/compiler/Generator.java @@ -892,9 +892,9 @@ class Generator { public void visit(Node.ELExpression n) throws JasperException { n.setBeginJavaLine(out.getJavaLine()); - if (!pageInfo.isELIgnored()) { + if (!pageInfo.isELIgnored() && (n.getEL() != null)) { out.printil("out.write(" - + JspUtil.interpreterCall(this.isTagFile, "${" + + JspUtil.interpreterCall(this.isTagFile, n.getType() + "{" + new String(n.getText()) + "}", String.class, n.getEL().getMapName(), false) + ");"); } else { diff --git a/java/org/apache/jasper/compiler/JspConfig.java b/java/org/apache/jasper/compiler/JspConfig.java index 36ca2b68d..7a9542fd1 100644 --- a/java/org/apache/jasper/compiler/JspConfig.java +++ b/java/org/apache/jasper/compiler/JspConfig.java @@ -114,7 +114,7 @@ public class JspConfig { String isXml = null; Vector includePrelude = new Vector(); Vector includeCoda = new Vector(); - String deferedSyntaxAllowedAsLiteral = null; + String deferredSyntaxAllowedAsLiteral = null; String trimDirectiveWhitespaces = null; while (list.hasNext()) { @@ -137,7 +137,7 @@ public class JspConfig { else if ("include-coda".equals(tname)) includeCoda.addElement(element.getBody()); else if ("deferred-syntax-allowed-as-literal".equals(tname)) - deferedSyntaxAllowedAsLiteral = element.getBody(); + deferredSyntaxAllowedAsLiteral = element.getBody(); else if ("trim-directive-whitespaces".equals(tname)) trimDirectiveWhitespaces = element.getBody(); } @@ -195,7 +195,7 @@ public class JspConfig { pageEncoding, includePrelude, includeCoda, - deferedSyntaxAllowedAsLiteral, + deferredSyntaxAllowedAsLiteral, trimDirectiveWhitespaces); JspPropertyGroup propertyGroup = new JspPropertyGroup(path, extension, property); diff --git a/java/org/apache/jasper/compiler/Validator.java b/java/org/apache/jasper/compiler/Validator.java index 15f3b3596..696b206c9 100644 --- a/java/org/apache/jasper/compiler/Validator.java +++ b/java/org/apache/jasper/compiler/Validator.java @@ -664,9 +664,11 @@ class Validator { // JSP.2.2 - '#{' not allowed in template text if (n.getType() == '#') { - if (pageInfo.isDeferredSyntaxAllowedAsLiteral()) + if (!pageInfo.isDeferredSyntaxAllowedAsLiteral()) { + err.jspError(n, "jsp.error.el.template.deferred"); + } else { return; - err.jspError(n, "jsp.error.el.template.deferred"); + } } // build expression @@ -1007,10 +1009,7 @@ class Validator { // Attribute does not accept any expressions. // Make sure its value does not contain any. if (isExpression(n, attrs.getValue(i))) { - err - .jspError( - n, - "jsp.error.attribute.custom.non_rt_with_expr", + err .jspError(n, "jsp.error.attribute.custom.non_rt_with_expr", tldAttrs[j].getName()); } jspAttrs[i] = new Node.JspAttribute(tldAttrs[j], @@ -1197,7 +1196,9 @@ class Validator { private boolean isExpression(Node n, String value) { if ((n.getRoot().isXmlSyntax() && value.startsWith("%=")) || (!n.getRoot().isXmlSyntax() && value.startsWith("<%=")) - || (value.indexOf("${") != -1 && !pageInfo.isELIgnored())) + || (value.indexOf("${") != -1 && !pageInfo.isELIgnored()) + || (value.indexOf("#{") != -1 && !pageInfo.isELIgnored() + && !pageInfo.isDeferredSyntaxAllowedAsLiteral())) return true; else return false; -- 2.11.0