0

我花了最后几个小时让 Struts 表达式按我的意愿工作,但没有成功。

我想从字符串执行 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 值而不是表达式评估?

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

4

1 回答 1

0

Struts 2 默认转义 ActionMessages。

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

UDPATE

尝试

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

不是

alert('<s:property value="%{#expr}" />');
于 2013-09-24T10:47:07.413 回答