如何使用s:set as param to s:在Struts 2中进行静态方法调用

时间:2013-05-09 12:49:25

标签: jsp struts2 struts ognl

我试过了:

<s:set name="ordersymbol" value="EURUSD" var="ordersymbol"/>
    <s:push value="@dao.positions@positionsO(%{#ordersymbol})">

<s:set name="ordersymbol" value="EURUSD" var="ordersymbol"/>
    <s:push value="@dao.positions@positionsO(#ordersymbol)">

<s:set name="ordersymbol" value="EURUSD" var="ordersymbol"/>
    <s:push value="@dao.positions@positionsO(ordersymbol)">

<s:set name="ordersymbol" value="EURUSD" var="ordersymbol"/>
    <s:push value="@dao.positions@positionsO(%{ordersymbol})">

上述四种方法均无效,方法始终为空参数。

虽然我试试

<s:push value="@dao.positions@positionsO('EURUSD')">

它工作正常。

4 个答案:

答案 0 :(得分:1)

你试过

吗?
<s:set name="ordersymbol" value="EURUSD" var="ordersymbol"/>
    <s:push value="@dao.positions@positionsO('%{#ordersymbol}')">

答案 1 :(得分:1)

我意识到这是一个老问题......但是:

无效的原因是“价值是一个对象”。正确的&lt; s:set /&gt;将是:

<s:set var="ordersymbol" value="'EURUSD'" />

和正确的&lt; s:push /&gt;是第二个。

答案 2 :(得分:0)

顺便说一下,我想出了一个替代方案。

<s:set value="@dao.positions@positionsO('EURUSD')" var="symbol1"/>
    <s:push value="#symbol1">

如果使用迭代器

<s:iterator value="#{'EURUSD':'EURUSD','GBPUSD':'GBPUSD'}>
<s:set value="@dao.positions@positionsO(value)" var="symbol1"/>
    <s:push value="#symbol1">...</s:push>
</s:iterator>

但是我仍然需要找到一种方法,因为我在迭代器中使用了一个列表,而不是上面的地图。

答案 3 :(得分:0)

尝试

<s:push value="%{@dao.positions@positionsO(#ordersymbol)}">

类似的东西,但整体表达并评估它。