From 234f5b53e9c01afe128d1c3e5e4783fc9037b59c Mon Sep 17 00:00:00 2001 From: remm Date: Wed, 4 Oct 2006 21:02:16 +0000 Subject: [PATCH] - Fix non deferred attributes evaluation. - Headache inducing patch submitted by Stan Silvert. git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@453023 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/jasper/compiler/Generator.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java index 537bd7202..0feeda120 100644 --- a/java/org/apache/jasper/compiler/Generator.java +++ b/java/org/apache/jasper/compiler/Generator.java @@ -2817,6 +2817,24 @@ class Generator { sb.append(','); sb.append(returnType); sb.append("))"); + // should the expression be evaluated before passing to + // the setter? + boolean evaluate = false; + if (tai.canBeRequestTime()) { + evaluate = true; // JSP.2.3.2 + } + if (attr.isDeferredInput()) { + evaluate = false; // JSP.2.3.3 + } + if (attr.isDeferredInput() && tai.canBeRequestTime()) { + evaluate = !attrValue.contains("#{"); // JSP.2.3.5 + } + if (evaluate) { + sb.append(".getValue("); + sb.append(getJspContextVar()); + sb.append(".getELContext()"); + sb.append(")"); + } attrValue = sb.toString(); } else if (attr.isDeferredMethodInput() || MethodExpression.class.getName().equals(type)) { -- 2.11.0