Java struts ognl动态表达式

Java struts ognl动态表达式,java,jsp,struts2,ognl,Java,Jsp,Struts2,Ognl,我花了过去几个小时让Struts表达式按我所希望的方式工作,但没有成功 我想从字符串执行OGNL表达式 通过示例,我有以下代码: <s:push value="#row"> alert('<s:property value="id + ' ' + id" />'); </s:push> 在JSP中: <s:set name="expr" value="getTest()"/> <s:push value="#row">

我花了过去几个小时让Struts表达式按我所希望的方式工作,但没有成功

我想从字符串执行OGNL表达式

通过示例,我有以下代码:

<s:push value="#row">

    alert('<s:property value="id + ' ' + id" />');

</s:push>
在JSP中:

<s:set name="expr" value="getTest()"/>

<s:push value="#row">

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

</s:push>
因为有引号,所以不起作用

但是,为什么在我的上一个示例中,我计算的是字符串值而不是表达式


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

Struts 2默认情况下会跳过ActionMessages

试试

UDPATE

试一试

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

警报(“”);

我在添加escape=“false”时没有区别。这是一个Javascript问题,而不是Java问题。这显然不是问题所在,因为s:property被执行并替换为一个值。我不在乎Javascript不起作用,我问为什么s:property没有被第二个示例中相同的值替换。删除JS引号并不重要,只有在JS中被警告的值被保证是合法的情况下才会起作用。带引号的表达式需要是JS-escape。但为什么在我的上一个示例中,我有字符串值而没有计算表达式?因为它是一根弦。看这个问题:。@AleksandrM:你让我哭了:DThanks Aleksandr M!完全解决了这个问题。
<s:set name="expr" value="getTest()"/>

<s:push value="#row">

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

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