Browse Source

SPR-6923 SpEL resolving nested property as outer object

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@3079 50f2f4bb-b051-0410-bef5-90022cba6387
pull/1/head
Scott Andrews 16 years ago
parent
commit
2c045db14d
  1. 2
      org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/EvalTag.java
  2. 14
      org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/tags/EvalTagTests.java

2
org.springframework.web.servlet/src/main/java/org/springframework/web/servlet/tags/EvalTag.java

@ -150,7 +150,7 @@ public class EvalTag extends HtmlEscapingAwareTag { @@ -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 {

14
org.springframework.web.servlet/src/test/java/org/springframework/web/servlet/tags/EvalTagTests.java

@ -90,6 +90,17 @@ public class EvalTagTests extends AbstractTagTests { @@ -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 { @@ -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\") }";

Loading…
Cancel
Save