f:param标签属性'disable'不起作用

Mak*_*aks 6 jsf facelets jsf-2

我尝试使用<f:param>tag来根据我的条件构建带参数的输出链接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> 
Run Code Online (Sandbox Code Playgroud)

我希望在网址中只看到一个参数,但我看到了两个.

Bal*_*usC 12

使用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> 
Run Code Online (Sandbox Code Playgroud)

请注意,当此块嵌入JSF迭代组件(例如<ui:repeat>,<h:dataTable>on)中时,这不起作用,并且test条件取决于迭代变量.