我希望能够从PrimeFaces面板元素有条件地省略页脚:
<p:panel header="some text"> <f:facet name="footer"> #{message} </f:facet> <!-- ... --> </p:panel>
我希望渲染的属性可以工作:
<p:panel header="some text"> <f:facet name="footer" rendered="#{!empty message}"> #{message} </f:facet> <!-- ... --> </p:panel>
但页脚仍然呈现,内容空白.看来facet没有渲染属性: http://www.jsftoolbox.com/documentation/help/12-TagReference/core/f_facet.html .
这样做的正确方法是什么?
我能够通过交换一个属性来解决这个问题.总结:
这个工作
<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
http://stackoverflow.com/questions/4369114/how-do-i-conditionally-render-an-ffacet