SPR-6923 SpEL resolving nested property as outer object

This commit is contained in:
Scott Andrews 2010-03-10 17:44:14 +00:00
parent af4b22e5b9
commit 50c5593740
2 changed files with 15 additions and 1 deletions

View File

@ -150,7 +150,7 @@ public class EvalTag extends HtmlEscapingAwareTag {
}
public boolean canRead(EvaluationContext context, Object target, String name) throws AccessException {
return (resolveImplicitVariable(name) != null || this.pageContext.findAttribute(name) != null);
return target == null && (resolveImplicitVariable(name) != null || this.pageContext.findAttribute(name) != null);
}
public TypedValue read(EvaluationContext context, Object target, String name) throws AccessException {

View File

@ -90,6 +90,17 @@ public class EvalTagTests extends AbstractTagTests {
assertEquals(new BigDecimal(".25"), context.getAttribute("foo"));
}
// SPR-6923
public void testNestedPropertyWithAttribtueName() throws Exception {
tag.setExpression("bean.bean");
tag.setVar("foo");
int action = tag.doStartTag();
assertEquals(Tag.EVAL_BODY_INCLUDE, action);
action = tag.doEndTag();
assertEquals(Tag.EVAL_PAGE, action);
assertEquals("not the bean object", context.getAttribute("foo"));
}
public static class Bean {
public String method() {
@ -104,6 +115,9 @@ public class EvalTagTests extends AbstractTagTests {
public String html() {
return "<p>";
}
public String getBean() {
return "not the bean object";
}
public String js() {
return "function foo() { alert(\"hi\") }";