【问题标题】:f:param tag attribute 'disable' is not workf:param 标记属性“禁用”不起作用
【发布时间】:2011-09-12 00:39:52
【问题描述】:

我尝试使用<f:param>标签根据我的一些条件构建带有参数的输出链接URL。

当我将此标签放在 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> 

我希望在 url 中只看到一个参数,但我都看到了。

【问题讨论】:

    标签: jsf jsf-2 facelets


    【解决方案1】:

    使用“禁用”而不是“禁用”。 原因在这里描述: http://markmail.org/message/bmb2lek5mcx4ofp7

    【讨论】:

    • 更好的是,两者都使用,这样当您的应用程序在固定版本的 Mojarra 上运行时,它可以继续工作。
    【解决方案2】:

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

    因此,它要么是 tag documentation 中的错误,它支持 ValueExpression,要么是 UIParameter 类中的错误,它没有将其解析为 ValueExpression。我至少为此报告了issue 2102


    更新:作为临时破解/解决方法,您可以在视图构建期间使用&lt;c:if&gt; 控制包含&lt;f:param&gt; 标记。

    <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 迭代组件中时,这将不起作用,例如 &lt;ui:repeat&gt;&lt;h:dataTable&gt; 等,并且 test 条件取决于迭代变量。

    【讨论】:

    • 我更新了答案以包含一个临时的破解/解决方法。在 Mojarra 人解决问题之前,您可以使用它。
    • 仅供参考:自 Mojarra 2.1.15 起已修复。 1.5 年后:/
    猜你喜欢
    • 2023-03-31
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多