我使用<h:outputLink>如下.
<c:set var="cid" value="1"/>
<c:set var="sid" value="2"/>
<h:outputLink value="Test.jsf">
<h:outputText value="Link"/>
<f:param name="cid" value="#{cid}"/>
<f:param name="sid" value="#{sid}"/>
</h:outputLink>
Run Code Online (Sandbox Code Playgroud)
这只是一个例子.两个查询字符串参数都是动态的.因此,<c:set>这里使用的只是为了演示.
在任何时候,可以存在一个,两个或不存在任何参数.在这种情况下,如果只有一个或不存在,则参数/ s被不必要地附加到不应发生的URL.防止将不必要的查询字符串参数附加到URL需要条件呈现<f:param>.
JSTL <c:if>如下
<c:if test="${not empty cid}">
<f:param name="cid" value="#{cid}"/>
</c:if>
Run Code Online (Sandbox Code Playgroud)
不工作.
怎么能有条件地渲染<f:param>内部<h:outputLink>?
Bal*_*usC 17
该<f:param>有一个disable(不disabled!)属性为宗旨.
<f:param name="cid" value="#{cid}" disable="#{empty cid}" />
<f:param name="sid" value="#{sid}" disable="#{empty sid}" />
Run Code Online (Sandbox Code Playgroud)
请注意,这在早于2.1.15的Mojarra版本中有一个错误,因为它们错误地将实际UIParameter属性disble改为disable.另见问题2312.
至于该<c:if>方法,只有在视图构建期间可用#{cid}且该方法才有效#{sid}.换句话说,如果它们仅在视图渲染时间期间可用,例如当它们依赖于var转发器组件时,它将失败.另请参阅JSF2 Facelets中的JSTL ......有意义吗?
| 归档时间: |
|
| 查看次数: |
3291 次 |
| 最近记录: |