转载

jsf – 如何有条件地呈现?

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

原文  https://codeday.me/bug/20181015/288084.html
正文到此结束
Loading...