en la celda editando un objeto con el menú de selección no actualizado

Tengo problemas para actualizar un objeto en una tabla de datos, incluso si funciona bien con otros objetos que usan la edición en celda: tengo un objeto llamado Auditoría que incluye un objeto Statu y un objeto utilisateur como este

    private int id;
private Statu statu;
private Utilisateur utilisateur;
private OrganismeAudite organismeAudite;
private String date;
private String personneRencontre;

en la tabla de datos que hago:

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

la columna de auditoría responsable se actualiza correctamente pero no funciona en la columna de auditoría de estado. Ambos son una relación de uno a muchos (estoy usando hibernate y spring ioc)

int the bean the rowlistener es así:

    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();
    }
}

ahora, cuando elijo un estado, userEdit.getStatu().getLibelle() me muestra el estado original, no el que he elegido de la lista, pero si hago clic en el ícono de verificación, solo guarda un valor cada vez que es el segundo elemento(statu)!!!!!!!!!!!!!!!!

no se que estoy haciendo mal gracias de antemano :)

preguntado el 03 de mayo de 12 a las 16:05

En la columna Statut Audit, para selectOneMenu, cambie el valor de selectItems de StatusBeane.listSta a car.statu.listSta y vea si el problema está resuelto. -

mmm car.statu no conoce listSta porque Auditbean solo tiene un estado de objeto, por lo que si uso car.statu solo puedo tener un objeto, no la lista de objetos que uso para llenar el menú. ¡Es por eso que llamo a StatusBeane! -

Me acabo de dar cuenta de que la primera fila se actualiza en la base de datos, pero no las demás, todavía tienen el mismo problema:

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.