0

我正在使用 struts 2.2.3.1,将数据库中的一些对象加载到一个操作中,然后使用 Freemarker 2.3.16 在<ul>.

我想要的功能是这样的:当我单击 a<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 标记将对象放入会话中。

4

1 回答 1

2

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

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

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

<@s.set name="objectToBeViewed" value=" ${object} " scope="session"/>

将 EL 内部值属性替换为 OGNL。

<@s.set name="objectToBeViewed" value=" object " scope="session"/>

于 2013-08-13T14:27:16.827 回答