我正在使用tag显示列表值。同时我想为显示值提供超链接以提供显示值的操作。我正在使用<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>
的值不是,它给出了空值。在针对该特定事务代码的迭代中,我想仅传递该特定事务代码。在struts 1.x中我为此使用了显示标签表装饰器,它接受当前行对象。我也想将当前行值传递给动作。请帮帮我。
答案 0 :(得分:3)
如果你想使用<s:property>
标记将一个参数放在一个网址中,你必须这样做:
<s:url ...>
<s:param name="foo"><s:property value="bar"/></s:param>
</s:url>
<s:param>
的{{3}}解释了使用这种放置参数的方式和你的方式之间的区别。
注意:声明param标记时,可以在值属性中定义值,也可以在开始和结束标记之间定义文本。根据这两种情况,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
}。你可以阅读它documentation。
答案 1 :(得分: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}是来自行动的地图参数