java - 为什么 p :panelGrid not work with ui:repeat?

标签 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>

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;
}   

带有素面的预期输出

enter image description here

最佳答案

ui:repeat 将不起作用,因为它实际上并没有将组件添加到组件树。

ui:repeat 仅在渲染阶段起作用,并以不同的状态多次重新渲染其子组件。

一些组件,例如panelgrid,还有datatable,希望组件树中有特定的子组件才能正常工作。由于 ui:repeat 没有添加这些,所以这种方法不起作用。

很抱歉,但通常的解决方案是使用 c:foreach,它确实将 child 添加到树中。

参见 https://rogerkeays.com/jsf-c-foreach-vs-ui-repeat

关于java - 为什么 p :panelGrid not work with ui:repeat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12972576/

相关文章:

java - 从表示为字符串的 HTML 中提取内容

java - Guice - 如何让多个模块为一件事做出贡献?

java - JSF 页面中删除按钮中的错误

java - JSF2.0 - *.xhtml 页面给出 404-NotFound 但 *.jsp 工作正常吗?

java - 不使用 xhtml 时填充 IceFaces HtmlSelectOneListbox

jsf - 引用复合组件内部的组件(反之亦然)

java - 在新的 JFrame-2 中显示 Jtable 内容后,如何将其保留在主 JFrame-1 上

jsf-2 - 图形图像未在 Primefaces 中呈现流式内容

java - JSF - 验证失败的焦点组件

java - 从 ArrayList 中选取随机 ImageButton 会引发 NullPointerException