为什么p:panelGrid不能用于ui:repeat?

Zaw*_* oo 6 java jsf primefaces

如果我使用如下,我没有错误,没有输出.为什么p:panelGrid不用ui:repeat

注意:我不想使用c:forEach因为我已经面临很多JSF问题.

<p:panelGrid>
    <ui:repeat value="#{MyBean.dataList}" var="data">
        <p:row>
            <p:column>
                <h:outputText value="#{data.name}"/>
            </p:column>
            <p:column>
                <h:outputText value="#{data.description}"/>
            </p:column>
        </p:row>
    </ui:repeat>
</p:panelGrid>
Run Code Online (Sandbox Code Playgroud)

MyBean.java

public List<Data> getDataList(){
    List<Data> result = new ArrayList<Data>();
    result.add(new Data("Name 1", "Description 1"));
    result.add(new Data("Name 2", "Description 2"));
    result.add(new Data("Name 3", "Description 3"));
    result.add(new Data("Name 4", "Description 4"));
    return result;
}   
Run Code Online (Sandbox Code Playgroud)

带有primefaces的预期输出

在此输入图像描述

Joe*_*ckx 10

ui:repeat 将无法工作,因为它实际上没有将组件添加到组件树.

ui:repeat 仅在呈现阶段工作,并以不同的状态多次重新呈现其子组件.

某些组件,例如panelgrid,但也datatable希望组件树中有某些子组件才能正常工作.由于ui:repeat不添加这些,这种方法不起作用.

我很抱歉,但对于这个正常的解决方案是使用c:foreach,这孩子添加到树.

http://www.ninthavenue.com.au/blog/c:foreach-vs-ui:repeat-in-facelets