1

我正在寻找一个 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>

因为页面已经设置了样式(而且我担心这是以一种脆弱的方式完成的),所以我需要一个xxxx不会生成自己的 html 元素的 jsf-component () div。这样的 jsf 组件会退出吗?

4

3 回答 3

3

如果您使用的是 primefaces,那么您有一个简单的解决方案:

使用p:outputPanel.

如果没有,那么您也可以使用h:panelGroup. 这没有任何自己的格式。

于 2012-07-10T14:30:03.627 回答
1

您可以使用

<ui:fragment rendered="#{not empty user.registrations}">

http://javaserverfaces.java.net/nonav/docs/2.1/vdldocs/facelets/ui/fragment.html

于 2012-07-10T14:13:17.950 回答
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>

或者你可以<h:panelGroup>用另一个包裹你的 4 <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>
于 2012-07-10T12:30:10.487 回答