import javax.el.ELException;
+import org.apache.el.lang.ELSupport;
import org.apache.el.lang.EvaluationContext;
for (int i = 0; i < this.children.length; i++) {
obj = this.children[i].getValue(ctx);
if (obj != null) {
- sb.append(obj);
+ sb.append(ELSupport.coerceToString(obj));
}
}
}
assertEquals(beanB, vr.getBase());
assertEquals("name", vr.getProperty());
}
+
+
+ public void testBug50105() {
+ ExpressionFactory factory = ExpressionFactory.newInstance();
+ ELContext context = new ELContextImpl();
+
+ TesterEnum testEnum = TesterEnum.APPLE;
+
+ ValueExpression var =
+ factory.createValueExpression(testEnum, TesterEnum.class);
+ context.getVariableMapper().setVariable("testEnum", var);
+
+ // When coercing an Enum to a String, name() should always be used.
+ ValueExpression ve1 = factory.createValueExpression(
+ context, "${testEnum}", String.class);
+ String result1 = (String) ve1.getValue(context);
+ assertEquals("APPLE", result1);
+
+ ValueExpression ve2 = factory.createValueExpression(
+ context, "foo${testEnum}bar", String.class);
+ String result2 = (String) ve2.getValue(context);
+ assertEquals("fooAPPLEbar", result2);
+ }
}
<body>
<!-- Catalina, Coyote, Jasper, Cluster, Web applications, Extras, Other -->
<section name="Tomcat 7.0.5 (markt)">
+ <subsection name="Jasper">
+ <changelog>
+ <bug>50105</bug>: When processing composite EL expressions use
+ <code>Enum.name()</code> rather than <code>Enum.toString()</code> as
+ required by the EL specification. (markt)
+ </changelog>
+ </subsection>
<subsection name="Web applications">
<changelog>
<fix>