我正在寻找一个JSF 2.0组件,它只是其他组件的容器,但不生成自己的HTML元素。
我的情况是我有一个(已经设置过的)jsf-xhtml组件页面。现在我需要禁用很多渲染。
<ui:component>
<h:panelGroup layout="block" rendered="#{not empty user.registrations}">...</>
<h:panelGroup layout="block" rendered="#{not empty user.registrations}">...</>
<h:panelGroup layout="block" rendered="#{not empty user.registrations}">...</>
<h:panelGroup layout="block" rendered="#{not empty user.registrations}">...</>
</ui:component>
但我不想指定前rendered="#{not empty user.registrations}"
次。相反,我想用一些组件包装它:
<ui:component>
<xxxx rendered="#{not empty user.registrations}">
<h:panelGroup layout="block">...</>
<h:panelGroup layout="block">...</>
<h:panelGroup layout="block">...</>
<h:panelGroup layout="block">...</>
</xxxx>
</ui:component>
因为页面已经设置了风格(我担心这是以一种脆弱的方式完成的)我需要一个不生成自己的html元素的jsf-component(xxxx
),如div
左右。
这样的jsf组件会退出吗?
答案 0 :(得分:3)
如果您使用的是primefaces,那么您有一个简单的解决方案:
使用p:outputPanel
。
如果没有,那么您也可以使用h:panelGroup
。这没有任何格式。
答案 1 :(得分:1)
您可以使用
<ui:fragment rendered="#{not empty user.registrations}">
http://javaserverfaces.java.net/nonav/docs/2.1/vdldocs/facelets/ui/fragment.html
答案 2 :(得分:0)
试试这个:
<c:if test="#{not empty user.registrations}">
<h:panelGroup layout="block">...</>
<h:panelGroup layout="block">...</>
<h:panelGroup layout="block">...</>
<h:panelGroup layout="block">...</>
</c:if>
或者您可以将4 <h:panelGroup>
与另一个<h:panelGroup>
包裹起来:
<h:panelGroup rendered="#{not empty user.registrations}">
<h:panelGroup layout="block">...</>
<h:panelGroup layout="block">...</>
<h:panelGroup layout="block">...</>
<h:panelGroup layout="block">...</>
</h:panelGroup>