我希望能够从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