0

我在更新数据表中的对象时遇到问题,即使它与使用 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>

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

在 bean 中,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();
    }
}

现在,当我选择一个状态时,userEdit.getStatu().getLibelle() 会向我显示原始状态,而不是我从列表中选择的状态,但是如果我单击检查 incon,它每次只会保存一个值第二元素(状态)!!!!!!!!!!!!!!!!!!

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

4

0 回答 0