struts ognl动态表达

时间:2013-09-24 10:32:01

标签: java jsp struts2 ognl

我花了最后几个小时让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值而不是评估的表达式?

我已经尝试了很多可能性,阅读文章,教程,但没有找到合适的答案来解决我的问题。

1 个答案:

答案 0 :(得分:0)

默认情况下,Struts 2会转义ActionMessages。

尝试<s:property value="%{#expr}" escape="false"/>

<强> UDPATE

尝试

alert(<s:property value="%{#expr}" />);

alert('<s:property value="%{#expr}" />');