我希望能够有条件地从PrimeFaces面板元素中省略页脚:

<p:panel header="some text">
    <f:facet name="footer">
        #{message}
    </f:facet>
    <!-- ... -->
</p:panel>


我希望rendered属性能起作用:

<p:panel header="some text">
    <f:facet name="footer" rendered="#{!empty message}">
        #{message}
    </f:facet>
    <!-- ... -->
</p:panel>


但是页脚仍然呈现,内容为空。看来facet没有rendered属性:http://www.jsftoolbox.com/documentation/help/12-TagReference/core/f_facet.html

什么是正确的方法?

最佳答案

我可以通过将facet换成attribute来解决此问题。总结一下:

这有效

<p:panel ...>
    <f:attribute name="footer" value="#{message}"/>
    <!-- ... -->
</p:panel>


但这行不通

<p:panel footer="#{message}">
    <!-- ... -->
</p:panel>


这也不

<p:panel ...>
    <f:facet name="footer">#{message}</f:facet>
    <!-- ... -->
</p:panel>


也没有

<p:panel ...>
    <f:facet name="footer">
        <h:outputText value="#{message}" rendered="#{!empty message}"/>
    </f:facet>
    <!-- ... -->
</p:panel>




“作品”我的意思是:

“当#{message}为空或null时,不提供页脚-不仅是空页脚;否则,请使用指定的文本正确呈现页脚。”



PrimeFaces forum thread on this issue

关于jsf - 如何有条件地渲染<f:facet>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4369114/

10-11 04:15