我希望能够有条件地从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/