【问题标题】:I'm stuck on dynamic panel我被困在动态面板上
【发布时间】:2013-04-28 16:40:09
【问题描述】:

我这两天遇到一个问题。我无处可去 我的问题是根据列表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> 

内容显示这是真的,但不幸的是它不同步显示移位 但是如果我使用另一个&lt;p: selectOneMenu id = "panel" 内容会显示并同步

我可以解决我的问题吗。请提前谢谢你

【问题讨论】:

  • 在 JSF 中使用 c:foreach 是个坏主意。你应该更喜欢 ui:repeat。这是由于生命周期差异造成的,可能会导致您所描述的问题。
  • 感谢卢卡斯,它现在可以正常工作了

标签: primefaces selectonemenu


【解决方案1】:

正如 Lucas 所说,在 JSF 中使用 c:foreach(以及各种 JSTL)是一个坏主意,尤其是使用 ajax。 以下是您应该阅读的参考资料,以了解有关 JSF 中 JSTL 的更多信息:

  1. JSTL in JSF2 Facelets... makes sense?
  2. https://rogerkeays.com/jsf-c-foreach-vs-ui-repeat

也不推荐在 h:panelGrid 中使用 ui:repeat。您可以阅读讨论here

所以,恕我直言,您应该尝试另一种方法,例如使用 dataTable,如上述链接中所述。
或者,您可以使用 html 的表格标记 (

) 代替 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> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2023-03-16
    • 2018-09-10
    • 1970-01-01
    • 2014-06-03
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多