如何使用Struts2标记将对象添加到会话范围?

时间:2013-08-13 14:24:08

标签: java struts2

我正在使用struts 2.2.3.1,将数据库中的一些对象加载到一个动作中,然后用<ul>中的Freemarker 2.3.16显示它们。

我想要的功能是:当我点击<li>中的<ul>时,我可以将查看的对象设置为应用程序的会话范围。

现在我只有这个:

<ul>
    <@s.iterator value="objectList" var="object">       
        <li>
          <@s.url id="myUrl" action="viewObjectPage">
             <@s.set name="objectToBeViewed" value="${object}" scope="session"/>
          </@s.url>

          <@s.a href="%{myUrl}">
            ${object.information?substring(0,7)}...
        </li>
    </@s.iterator>
</ul>

我问是否有办法使用 struts 2标记将对象放入会话。

1 个答案:

答案 0 :(得分:2)

您可以使用<s:set>标记。 set 标记为指定范围内的变量分配值。当您希望将变量分配给复杂表达式,然后每次只引用该变量而不是复杂表达式时,它非常有用。这在两种情况下都很有用:复杂表达式需要时间(性能改进)或难以阅读(代码可读性改进)。

<s:set name="personName" value="person.name" scope="session" />

注意:您应该使用OGNL而不是在Struts标记中使用EL($ {})。

  

&lt; @ s.set name =“objectToBeViewed”value =“ $ {object} ”scope =“session”/&gt;

用OGNL替换EL内部值属性。

  

&lt; @ s.set name =“objectToBeViewed”value =“ object ”scope =“session”/&gt;