Mat*_*all 18 jsf primefaces jsf-2
我希望能够从PrimeFaces面板元素有条件地省略页脚:
<p:panel header="some text">
<f:facet name="footer">
#{message}
</f:facet>
<!-- ... -->
</p:panel>
Run Code Online (Sandbox Code Playgroud)
我希望该rendered
属性可以工作:
<p:panel header="some text">
<f:facet name="footer" rendered="#{!empty message}">
#{message}
</f:facet>
<!-- ... -->
</p:panel>
Run Code Online (Sandbox Code Playgroud)
但页脚仍然呈现,内容空白.它似乎facet
没有rendered
属性:http://www.jsftoolbox.com/documentation/help/12-TagReference/core/f_facet.html.
这样做的正确方法是什么?
Mat*_*all 14
我能够通过交换facet
出来来解决这个问题attribute
.总结一下:
<p:panel ...>
<f:attribute name="footer" value="#{message}"/>
<!-- ... -->
</p:panel>
Run Code Online (Sandbox Code Playgroud)
<p:panel footer="#{message}">
<!-- ... -->
</p:panel>
Run Code Online (Sandbox Code Playgroud)
<p:panel ...>
<f:facet name="footer">#{message}</f:facet>
<!-- ... -->
</p:panel>
Run Code Online (Sandbox Code Playgroud)
<p:panel ...>
<f:facet name="footer">
<h:outputText value="#{message}" rendered="#{!empty message}"/>
</f:facet>
<!-- ... -->
</p:panel>
Run Code Online (Sandbox Code Playgroud)
"渲染没有页脚 - 不只是一个空页脚 - 当它#{message}
是空的时候null
;否则,正确地使用指定的文本呈现页脚."
小智 8
您可以声明一个ui:param并让模板在渲染时检查参数.
然后可以将模板中的构面声明为:
<f:facet name="#{hideFooter == null or not hideFooter ? 'footer' : ''}">
#{message}
</f:facet>
Run Code Online (Sandbox Code Playgroud)
然后任何页面都可以声明此参数
<ui:param name='hideFooter' value='#{some rule}' />
Run Code Online (Sandbox Code Playgroud)
并为param设置适当的规则.对于未声明参数的任何页面,将显示页脚.
这是我尝试在复合组件中有条件地渲染构面时所做的.
<composite:interface>
<composite:facet name="header" required="false" />
</composite:interface>
<composite:implementation>
<p:panel>
<c:if test="#{empty component.facets.header}" >
<f:facet id="#{cc.attrs.id}_default_header" name="header">
all sorts of stuff here
</f:facet>
</c:if>
<c:if test="#{not empty component.facets.header}">
<composite:insertFacet id="#{cc.attrs.id}_custom_header" name="header" />
</c:if>
<composite:insertChildren id="#{cc.attrs.id}_content"/>
</p:panel>
</composite:implementation>
Run Code Online (Sandbox Code Playgroud)
这让复合组件的用户提供了标题facet,如果他们不需要,我们提供默认值.显然,您可以根本不做任何事情,而不是提供默认值.
这混合c:如果在jsf控件中,但我们没有看到任何不利影响.
归档时间: |
|
查看次数: |
26987 次 |
最近记录: |