0

我正在显示带有标签的列表值。同时我想为显示值提供一个超链接以提供显示值的操作。我正在使用<s:param>它。但值没有通过。我写如下

<s:iterator status="stat" value="transactionList">
        <s:url id="open" action="openTransaction">
              <s:param name="transactionCode" value="<s:property value='monthName'/>"/>
         </s:url>
 <tr class="gradeB">
  <td>
    <s:a href="%{open}"><s:property value='transactionCode'/></s:a>
  </td>
  <td><s:property value="monthName"/></td>
  <td><s:property value="transactionDesc"/></td>

  </tr>
  </s:iterator>

现在该transactionCode属性显示超链接,并通过单击该操作正在转发到openTransaction方法。但是我传递的值<s:param>没有,它给出了 null。在该特定事务代码的迭代中,我只想传递该特定事务代码。在 struts 1.x 中,我为此使用了显示标记表装饰器,它采用当前行对象。这里我还想将当前行值传递给操作。请帮我。

4

2 回答 2

3

如果您想使用<s:property>标签将参数放在 url 中,您必须这样做:

<s:url ...>
    <s:param name="foo"><s:property value="bar"/></s:param>
</s:url>

文档<s:param>解释了使用这种放置参数的方式和你的方式之间的区别。

注意:声明 param 标记时,可以在 value 属性中定义值,也可以将值定义为开始和结束标记之间的文本。根据这两种情况,Struts 的行为有点不同。最好用一个例子来说明这一点:

<param name="color">blue</param> <-- (A) --> 
<param name="color" value="blue"/> <-- (B) --> 

在第一种情况 (A) 中,该值将作为 java.lang.String 对象评估到堆栈中。在情况 (B) 中,该值将作为 java.lang.Object 对象评估到堆栈中。有关详细信息,请参阅 WW-808。

编辑:还请记住,如果您使用的是 2.1.x 或更高版本,则不推荐使用 的id属性,<s:url>并且已将其替换为var. 你可以在这里阅读。

于 2012-08-22T06:12:12.020 回答
0
<c:url var="search" value="/image/search.action">
<c:forEach items="${filtersMap}" var="map">
<c:param name="filtersMap.${map.key}" value="${map.value}"/>
</c:forEach>

${filtersMap} 是来自动作的地图参数

于 2013-09-12T07:39:52.947 回答