Primefaces I';我卡在动态面板上

Primefaces I';我卡在动态面板上,primefaces,selectonemenu,Primefaces,Selectonemenu,两天来我遇到了一个问题。我无处可进 我的问题是根据列表p:selectOneMenu中的选定元素在面板中创建动态内容 <h:outputLabel value="Categorie :" /> <p:selectOneMenu value="#{composantbean.selectedCategoryId}" required="true" > <f:selectItem

两天来我遇到了一个问题。我无处可进 我的问题是根据列表p:selectOneMenu中的选定元素在面板中创建动态内容

    <h:outputLabel value="Categorie :"  />  
                <p:selectOneMenu  value="#{composantbean.selectedCategoryId}" required="true" >  
                    <f:selectItem itemLabel="Select categorie" itemValue="" />  
                    <f:selectItems  value="#{composantbean.listcat}" var="cat" itemValue="#{cat.nomCat}" itemLabel="#{cat.nomCat}" /> 
                    <p:ajax update="panl"  event="change" listener="#{composantbean.catListener()}"/>
                </p:selectOneMenu>  


<p:panel id="panl" header ="Caracteristique selon la categorie" toggleable="true" rendered="true" >

            <h:panelGrid  id="panlecart" columns="2" cellpadding="5" rendered="true">
            <c:forEach items="#{composantbean.categorie.proprietes}"  var="var">

            <h:outputText value="#{var.nomProp}"/>
            <h:inputText value="" />

            </c:forEach>
         </h:panelGrid>
          </p:panel> 

内容显示这是真的,但不幸的是,它没有同步显示
但是如果我像Lucas所说的那样使用另一个
,那么在JSF中使用c:foreach(以及所有类型的JSTL)是个坏主意,尤其是在ajax中。
以下是您应该阅读的参考资料,以了解更多关于JSF中JSTL的信息:

  • 也不建议在h:panelGrid中使用ui:repeat。你可以阅读讨论

    因此,IMHO,您应该尝试另一种方法,如上面链接中所述,使用dataTable。
    或者,您可以使用html的table标记()替换h:panelGrid,在ui:repeat中使用html的tr和td标记。例如:

    <h:outputLabel value="Categorie :"  />  
    <p:selectOneMenu  value="#{composantbean.selectedCategoryId}" required="true" >  
      <f:selectItem itemLabel="Select categorie" itemValue="" />  
      <f:selectItems  value="#{composantbean.listcat}" var="cat" itemValue="#{cat.nomCat}" itemLabel="#{cat.nomCat}" /> 
      <p:ajax update="panl"  event="change" listener="#{composantbean.catListener()}"/>
    </p:selectOneMenu>  
    
    <p:panel id="panl" header ="Caracteristique selon la categorie" toggleable="true" rendered="true" >
    
      <table>
      <ui:repeat value="#{composantbean.categorie.proprietes}"  var="var">
        <tr>
          <td><h:outputText value="#{var.nomProp}" /></td>
          <td><h:inputText value="" /></td>
        </tr>
      </ui:repeat>
      </table>
    </p:panel> 
    
    
    
    在JSF中使用c:foreach是个坏主意。您应该更喜欢ui:重复。这是由于生命周期的差异,可能会导致您所描述的问题。Thx lucas它现在工作正常