我尝试使用<f:param>
标记来构建输出链接URL,参数取决于我的一些条件。
当我把这个标签放在h:output链接中,并试图为"disable"设置不同的值时,我看不到任何效果。
这是我的代码
<h:outputLink value="/WebApplication10/faces/index.xhtml">
Link1
<f:param disable="#{true}" name="name1" value="value1"/>
<f:param disable="#{false}" name="name2" value="value2"/>
</h:outputLink>
我希望在url中只看到一个参数,但我看到了两个参数。
使用disable="true"
而不是disable="#{true}"
对我有效。
因此,要么是标签文档中支持ValueExpression
的错误,要么是UIParameter
类中没有将其解析为ValueExpression
的错误。我至少为此报告了第2102期。
更新:作为一种临时破解/解决方法,您可以使用<c:if>
来控制在视图构建时包含<f:param>
标记。
<h:outputLink value="/WebApplication10/faces/index.xhtml">
Link1
<c:if test="#{!true}"><f:param name="name1" value="value1"/></c:if>
<c:if test="#{!false}"><f:param name="name2" value="value2"/></c:if>
</h:outputLink>
请注意,当这篇文章嵌入到JSF迭代组件(如<ui:repeat>
、<h:dataTable>
等)中,并且test
条件取决于迭代变量时,这将不起作用。
使用"disble"而不是"disable"。原因如下:http://markmail.org/message/bmb2lek5mcx4ofp7