Java struts ognl动态表达式
我花了过去几个小时让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">
<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}" />');