Primefaces ui:repeat和c:foreach不返回同一组织

Primefaces ui:repeat和c:foreach不返回同一组织,primefaces,foreach,uirepeat,Primefaces,Foreach,Uirepeat,我有一个包含属性列表的循环 我想在两列中显示此列表,但我不能。 它们按无序显示,如果我对ui:repeat的每个位置使用c: 问题解决了 <p:panel id="panlecart2" header ="Caracteristique selon la categorie" toggleable="true" rendered="true" style="width=900px;"> <h:panelGrid id="panl

我有一个包含属性列表的循环 我想在两列中显示此列表,但我不能。 它们按无序显示,如果我对ui:repeat的每个位置使用c: 问题解决了

<p:panel id="panlecart2" header ="Caracteristique selon la categorie" toggleable="true" rendered="true" style="width=900px;">            
            <h:panelGrid  id="panlecart" columns="2" cellpadding="5" rendered="true" style="width=900px;">                         
            <ui:repeat var="var1" value="#{composantbean.categorie.proprietes.toArray()}">            
            <h:outputText value="#{var1.nomProp }(#{var1.unite}  )"  />
            <h:inputText value="" />  

            </ui:repeat>             
         </h:panelGrid>
          </p:panel>   


我可以解决这个问题吗。请帮助:)

ui:repeat
在比
c:forEach
更晚的阶段渲染。这是一个例子

c:forEach
是一种方法,因为它是在视图构建时调用的


ui:repeat
在视图渲染期间被调用,因此
p:panel
将不知道由
ui:repeat

创建的数据。您可以切换到使用
迭代组件:

<h:dataTable var="var1" value="#{composantbean.categorie.proprietes.toArray()}">
    <h:column>
        <h:outputText value="#{var1.nomProp }(#{var1.unite}  )"  />
    </h:column>
    <h:column>
        <h:inputText value="" />  
    </h:column>
</h:dataTable>


将其封装在
中以使其正常工作。否则,请使用
,因为它非常适合您的用例。

我必须使用ui:repeat,因为我必须用ajax在这个面板中显示一些动态内容!!!有什么解决方案吗?你所说的动态内容是什么意思?你能给我们举个例子吗?您提供的示例在使用
c:forEach
时效果非常好,当用户选择一个项目时,我使用selectoneMenu显示selectect项目的详细信息。面板的内容根据所选项目显示。我对foreach有问题,所以我使用Repeat,正如我所说。c:foreach的问题不支持ajaxThx现在可以使用h:dataTable了。感谢您的合作