如果我按如下方式使用,则不会出现错误,也不会输出。
为什么 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;
}
带有素面的预期输出
最佳答案
ui:repeat
将不起作用,因为它实际上并没有将组件添加到组件树。
ui:repeat
仅在渲染阶段起作用,并以不同的状态多次重新渲染其子组件。
一些组件,例如panelgrid
,还有datatable
,希望组件树中有特定的子组件才能正常工作。由于 ui:repeat
没有添加这些,所以这种方法不起作用。
很抱歉,但通常的解决方案是使用 c:foreach
,它确实将 child 添加到树中。
关于java - 为什么 p :panelGrid not work with ui:repeat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12972576/