我花了最后几个小时让Struts表达式按照我的意愿工作,但没有成功。
我想从String中执行OGNL表达式。
例如,我有以下代码:
<s:push value="#row">
alert('<s:property value="id + ' ' + id" />');
</s:push>
这完美地给了我两次对象的id。
这个例子
<s:push value="#row">
<s:set name="expr" value="id + ' ' + id"/>
alert('<s:property value="%{#expr}" />');
</s:push>
也可以。
但是现在,如果我在我的行动中创建一个方法:
public String getTest() {
return "id + ' ' + id";
}
并在JSP中:
<s:set name="expr" value="getTest()"/>
<s:push value="#row">
alert('<s:property value="%{#expr}" />');
</s:push>
结果是:
alert('id + ' ' + id');
由于报价不起作用。
但为什么在我的上一个例子中我有String值而不是评估的表达式?
我已经尝试了很多可能性,阅读文章,教程,但没有找到合适的答案来解决我的问题。
答案 0 :(得分:0)
默认情况下,Struts 2会转义ActionMessages。
尝试<s:property value="%{#expr}" escape="false"/>
<强> UDPATE 强>
尝试
alert(<s:property value="%{#expr}" />);
不
alert('<s:property value="%{#expr}" />');