解释起来有点棘手。我正在尝试编写一个标记来组合一堆地址字段,但我在计算 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”的字符串。
最佳答案
多一点研究,长时间盯着 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>
似乎可以解决问题。
关于jsp - struts ognl表达式对表达式的结果求值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/853569/