有条件地在Struts 2中为URL-Tag添加param

时间:2016-11-29 08:40:26

标签: jsp struts2

假设我想根据用if-tag表示的条件在Struts 2中的url-tag中添加一个参数。

什么不起作用是因为param被添加到容器中,在这种情况下是if-tag。

<s:url id="url" value="path/to/something">
  <s:if test="%{#expression}">
    <s:param name="param" value="value" />
  </s:if>
</s:url>

是否有替代下面的代码,即使未设置param也能很好地工作?

<s:if test="%{#expression}">
  <s:set name="param" value="value"/>
</s:if>
<s:else>
  <s:set name="param" value=""/>
</s:else>

<s:url id="url" value="path/to/something">
  <s:param name="param" value="%{#param}" />
</s:url>

该片段将被多次包含在内。这就是为什么param显式设置为空(如果表达式的计算结果为false),则将其转换为空。

1 个答案:

答案 0 :(得分:0)

您不应该对if代码进行参数化,而是可以将url标记包裹在if/else个代码

<s:if test="%{#expression}">
  <s:url var="url" value="path/to/something">
    <s:param name="param" value="value" />
  </s:url>
</s:if>
<s:else>
 <s:url var="url" value="path/to/something">
  <s:set name="param" value=""/>
 </s:url>
</s:else>