解释这有点棘手。我正在尝试编写一个标记来组合一堆地址字段,但是我在制作ognl表达式时遇到了麻烦。
预期用途:
member.address映射到Address对象(没有太多切割器)。
我的标签(最简单的版本):
<%@taglib prefix="s" uri="/struts-tags" %>
<%@attribute name="name" required="true" rtexprvalue="true" type="java.lang.String" %>
<s:push value="%{#attr.name}">
Address line 1:
<s:property value="line1"/>
</s:push>
我认为问题是<s:push value="%{#attr.name}"/>
实际上并没有将member.address的结果推送到堆栈上,只是推送了一个值为'member.address'的字符串。
答案 0 :(得分:4)
进一步研究并长时间盯着ognl documentation导致以下结果:
<%@taglib prefix="s" uri="/struts-tags" %>
<%@attribute name="name" required="true" rtexprvalue="true" type="java.lang.String" %>
<s:push value="%{(#attr.name)(#attr)}">
Address line 1:
<s:property value="line1"/>
</s:push>
似乎很有效。