在单元格中编辑没有更新选择菜单的对象

时间:2012-05-03 15:04:26

标签: spring hibernate jsf jsf-2 primefaces

我无法更新数据表中的对象,即使它使用incell edeting可以很好地处理其他对象: 我有一个名为Audit的对象,它包含一个对象Statu和一个像这样的对象utilisateur

    private int id;
private Statu statu;
private Utilisateur utilisateur;
private OrganismeAudite organismeAudite;
private String date;
private String personneRencontre;
我在数据表中的

<p:dataTable var="car" value="#{AuditBean.listAudit}" id="carList" editable="true">
       <p:ajax event="rowEdit" update="@this"
               listener="#{AuditBean.rowEditListener}" />
       <f:facet name="header">  
           Modification  
       </f:facet>

       <p:column headerText="ID" style="width:125px">
           <p:cellEditor>
               <f:facet name="output">
                   <h:outputText value="#{car.id}" />
               </f:facet>
               <f:facet name="input">
                   <p:inputText value="#{car.id}" style="width:100%" />
               </f:facet>
           </p:cellEditor>
       </p:column>

       <p:column headerText="Date" style="width:125px">
           <p:cellEditor>
               <f:facet name="output">
                   <h:outputText value="#{car.date}" />
               </f:facet>
               <f:facet name="input">
                   <p:inputText value="#{car.date}" style="width:100%" label="Year" />
               </f:facet>
           </p:cellEditor>
       </p:column>



       <p:column headerText="Personne Rencontre" style="width:125px">
           <p:cellEditor>
               <f:facet name="output">
                   <h:outputText value="#{car.personneRencontre}" />
               </f:facet>
               <f:facet name="input">
                   <h:inputText value="#{car.personneRencontre}" />
               </f:facet>
           </p:cellEditor>
       </p:column>


       <p:column headerText="Responsable Audit">
           <p:cellEditor>
               <f:facet name="output">
                   <h:outputText value="#{car.utilisateur.nom}" />
               </f:facet>
               <f:facet name="input">
                   <p:selectOneMenu id="idUtilisateur" value="#{car.utilisateur.idutilisateur}">
                       <f:selectItems value="#{UtilisateurBean.listUtilsa}"
                                      var="utilisateur" itemLabel="#{car.utilisateur.nom}"
                                      itemValue="#{car.utilisateur.idutilisateur}" />
                   </p:selectOneMenu>
               </f:facet>
           </p:cellEditor>
       </p:column>

       <p:column headerText="Statut Audit" style="width:125px">
           <p:cellEditor>
               <f:facet name="output">
                   <h:outputText value="#{car.statu.libelle}" />
               </f:facet>
               <f:facet name="input">
                   <p:selectOneMenu id="idStatut" value="#{car.statu.id}">

                       <f:selectItems var="statu" value="#{StatusBeane.listSta}"
                                      itemLabel="#{car.statu.libelle}"
                                      itemValue="#{car.statu.id}" />
                   </p:selectOneMenu>
               </f:facet>
           </p:cellEditor>
       </p:column>


       <p:column headerText="Organisme Audité" style="width:125px">
           <p:cellEditor>
               <f:facet name="output">
                   <h:outputText value="#{car.organismeAudite.nom}" />
               </f:facet>

               <f:facet name="input">
                   <p:selectOneMenu id="idOrganisme" value="#{AuditBean.idOrganisme}">
                       <f:selectItems var="orgStA" value="#{OrganismeAuditeBean.listOrga}" />
                   </p:selectOneMenu>
               </f:facet>
           </p:cellEditor>
       </p:column>

       <p:column headerText="Options" style="width:50px">
           <p:rowEditor />
       </p:column>

   </p:dataTable>

责任审计列的更新很好,但在statu审计列中不起作用。他们都是一对多的关系(我正在使用hibernate和spring ioc)

在int中,rowlistener如下所示:

    public void rowEditListener(RowEditEvent ev) {
    try {
        Audit userEdit = (Audit) ev.getObject();
        Utilisateur u= new Utilisateur();
        Statu sta=new Statu();
        System.out.println(userEdit.getStatu().getId());
        // getUserEJB().save(userEdit);
        System.out.println(userEdit.getDate() + " - " + userEdit.getId()+" - "+userEdit.getUtilisateur().getIdutilisateur()+" - "+userEdit.getStatu().getLibelle());
        resp.update(userEdit);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

现在我选择一个statu userEdit.getStatu()。getLibelle()向我显示原始statu不是我从列表中选择的那个,但是如果我点击检查,它每次只保存一个值这是seconde元素(statu)!!!!!!!!!!!!!!!!!

我不知道我做错了什么 提前谢谢:)

0 个答案:

没有答案