Jsf c:forEach内部基本面(例如p:panelgrid)内部ui:重复

Jsf c:forEach内部基本面(例如p:panelgrid)内部ui:重复,jsf,jsf-2,primefaces,panelgrid,Jsf,Jsf 2,Primefaces,Panelgrid,我必须亲自制作一份表格清单。其中每一个都有固定行的可变列数 为了执行此操作,我首先将a放入an:中,因此我正确地生成了一个表列表 然后,为了直观地生成这些列,我尝试将a或a都放在列中。结果我没有得到任何行 我在这里写了一个简单的例子。在bean testBackingBean中,我定义并初始化了变量ArrayList表。这是无法产生预期结果的xhtml: <ui:repeat var="table" value="#{testBackingBean.tables}"> <

我必须亲自制作一份表格清单。其中每一个都有固定行的可变列数

为了执行此操作,我首先将a放入an:中,因此我正确地生成了一个表列表

然后,为了直观地生成这些列,我尝试将a或a都放在列中。结果我没有得到任何行

我在这里写了一个简单的例子。在bean testBackingBean中,我定义并初始化了变量ArrayList表。这是无法产生预期结果的xhtml:

<ui:repeat var="table" value="#{testBackingBean.tables}">
    <p:panelGrid>
        <f:facet name="header">
            <p:row>
                <p:column >header of #{table}</p:column>
            </p:row>
        </f:facet>
        <p:row>
            <c:forEach var="row" items="${table}">
                <p:column>#{row}</p:column>
            </c:forEach>
        </p:row>
    </p:panelGrid>
</ui:repeat>

然后我得到一个空的结果。我知道,这是一个不同的问题

从XHTML源代码到生成的HTML输出的转换是一个两步过程

首先,在视图构建期间,XHTML源代码被解析并在表示JSF UI组件树的Java UIComponent实例树中转换,如FacesContextgetViewRoot所示

然后,在视图呈现期间,JSF UI组件树生成HTML输出并将其写入HTTP resopnse,从UIViewRootencodeAll方法开始

与所有JSTL标记一样,几个JSF标记和只有几个Facelets标记在视图构建期间运行。与所有JSF标记一样,几个Facelets标记和只有几个JSF标记在视图渲染期间运行

换句话说,内部声明的UI组件在JSF组件树中基于视图构建期间多次重新创建,然后在视图呈现期间分别生成各自的HTML输出。在视图构建期间,内部声明的UI组件在JSF组件树中只创建一次,而在视图呈现期间,JSF组件树又会根据生成的HTML输出重复使用多次

您的具体问题是由以下事实引起的:仅在视图渲染时可用,而在视图生成时不可用。基本上,当它将要在视图构建期间运行时,将{null}作为值检索

您可以通过将外部替换为来解决此问题。虽然我想知道你是否能更好地使用它

另见:
谢谢你的快速回复。我将尝试使用动态列。顺便说一句,如果我使用两个c:forEach,那么就不会生成panelGroups。不幸的是,我的数据结构是一个bean数组,每个bean都有一些属性。感谢您的解释:
<c:forEach  items="${testBackingBean.tables}" var="tabella">
    current element: #{tabella}
</c:forEach>