2013-04-28 5 views
0

Я столкнулся с проблемой в течение двух дней. нигде я заранее моя проблема заключается, чтобы сделать динамическое содержимое в панели в соответствии с выбранным элементом в списке р: 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> 

содержание появляется это верно, но, к сожалению, не синхронизирован отображается сдвиг , но если Я использую отображается другое <p: selectOneMenu id = "panel" содержания и синхронизируется

Хау я могу фиксирую мой prblem Пожалуйста посылай и спасибо заранее

+1

Использование c: foreach - плохая идея в JSF. Вы должны предпочесть ui: repeat. Это связано с различиями в жизненном цикле и может привести к таким проблемам, как вы описываете. – Lucas

+0

Thx lucas теперь отлично работает – FERESSS

ответ

1

Как Лукас сказал, что это плохая идея, с помощью C: Еогеасп (и все виды JSTL) в JSF, особенно с ajax. Вот ссылки вы должны прочитать, чтобы знать больше о JSTL в JSF:

  1. JSTL in JSF2 Facelets... makes sense?
  2. http://www.ninthavenue.com.au/jsf-c-foreach-vs-ui-repeat

Использование Ui: повторить в час: panelGrid не рекомендуется также. Вы можете прочитать обсуждение here.

Итак, ИМХО, вы должны попробовать другой подход, например, использовать dataTable, как указано в ссылке выше.
Или вы можете использовать таблицу таблицы html (<table>) в качестве замены h: panelGrid, с тэгом html tr и td внутри ui: repeat. Например:

<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> 
+0

thx alexander для вашего сотрудничества – FERESSS

Смежные вопросы