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

时间:2011-06-09 20:18:05

标签: jsf jsf-2 facelets

我尝试使用<f:param>标记根据我的条件构建带参数的输出链接网址。

当我将此标记放在h:output链接中并尝试为“禁用”设置不同的值时,我认为没有效果。

这是我的代码

<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> 

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

2 个答案:

答案 0 :(得分:12)

使用disable="true"代替disable="#{true}"对我有用。

因此,它是tag documentation中支持ValueExpression的错误或UIParameter类中的错误,它不会将其解析为ValueExpression。我至少为此报告了issue 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>和on并且test条件取决于迭代变量时,这不起作用。

答案 1 :(得分:4)

使用'禁用'代替'禁用'。 原因在这里描述: http://markmail.org/message/bmb2lek5mcx4ofp7