2013-06-06 4 views
0

У нас возникла проблема с обновлением, поля меняются только визуально, они сохраняются в базе данных и списке. Удалить работу.Редактирование ячеек таблицы данных

Это де XHTML файл:

  <p:contextMenu for="conjunt" widgetVar="cMenu">  
       <p:menuitem value="Editar celda" icon="ui-icon-search" onclick="conjuntTable.showCellEditor();return false;"/>  
       <p:menuitem value="Ocultar menu" icon="ui-icon-close" onclick="cMenu.hide()"/>  
      </p:contextMenu> 

      <p:dataTable id="conjunt" var="con" value="#{userManager.administradorBean.conjuntos}" editable="true" editMode="cell" widgetVar="conjunt"> 
       <f:facet name="header"> 
         #{msg.conjunto}s 
       </f:facet> 

       <p:ajax event="cellEdit" listener="#{userManager.administradorBean.onCellEdit}" update=":form:messages" /> 

       <p:column headerText="Nombre" style="width:33%"> 
        <p:cellEditor> 
         <f:facet name="output"><h:outputText value="#{con.nombre}" /></f:facet> 
         <f:facet name="input"><p:inputText id="modelInput" value="#{con.nombre}" style="width:100%"/></f:facet> 
        </p:cellEditor> 
       </p:column> 

       <p:column headerText="Direccion" style="width:33%"> 
        <p:cellEditor> 
         <f:facet name="output"><h:outputText value="#{con.direccion}" /></f:facet> 
         <f:facet name="input"><p:inputText value="#{con.direccion}" style="width:100%" label="Direccion"/></f:facet> 
        </p:cellEditor> 
       </p:column> 

       <p:column> 
        <h:commandLink value="Eliminar" action="#{userManager.administradorBean.confirmarEliminar(conjunto)}" style="width:33%"/> 
       </p:column> 
      </p:dataTable> 
     </h:form> 

Это боб:

@ManagedBean 
@SessionScoped 
public class AdministradorBean 
{ 
    private Conjunto conjunto; 

    @EJB 
    private AdministradorEJB adminBO; 

    private List<Conjunto> conjuntos; 

    public Conjunto updateConjunto() 
    { 
     FacesMessage mensaje = null; 
     if(conjunto.getDireccion()==null){ 
      mensaje = new FacesMessage("Ingrese una direccion"); 
     } 
     else if(conjunto.getNombre()==null){ 
      mensaje = new FacesMessage("Ingrese un nombre"); 
     } 
     else{ 
      try{ 
       Conjunto c = adminBO.actualizarConjunto(conjunto); 
       mensaje = new FacesMessage("Se creo exitosamente"); 
       conjunto=new Conjunto(); 
       return c; 
      } 
      catch(Throwable e){ 
       e=extraerExcepcion(e); 
       mensaje = new FacesMessage(e.getMessage()); 
      } 
     } 
     FacesContext.getCurrentInstance().addMessage(null, mensaje); 

     return null; 
    } 

    public void confirmarEliminar(Conjunto conjunto) 
    { 
     this.conjunto = conjunto; 
     removerConjunto(); 
    } 


    public void removerConjunto(){ 
     FacesMessage mensaje = null; 
     if(conjunto.getNombre()==null){ 
      mensaje = new FacesMessage("Ingrese un nombre"); 
     } 
     else{ 
      try{ 
       adminBO.removerConjunto(conjunto.getNombre()); 
       mensaje = new FacesMessage("El conjunto se removio exitosamente"); 
       conjunto=new Conjunto(); 
      } 
      catch(Throwable e){ 
       e=extraerExcepcion(e); 
       mensaje = new FacesMessage(e.getMessage()); 
      } 
     } 
     FacesContext.getCurrentInstance().addMessage(null, mensaje); 
    } 

    public void onCellEdit(CellEditEvent event) { 
     conjunto = conjuntos.get(event.getRowIndex()); 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Campo actualizado",event.getRowIndex()+" "+conjunto.getDireccion()+" "+conjunto.getNombre())); 
     updateConjunto(); 

     Object oldValue = event.getOldValue(); 
     Object newValue = event.getNewValue(); 

     getConjuntos(); 

     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Campo actualizado","Viejo:"+oldValue.toString()+" Nuevo:"+newValue.toString())); 

     if(newValue != null && !newValue.equals(oldValue)) { 
      FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Campo actualizado","El conjunto se removio exitosamente")); 
     } 
    } 
} 

https://dl.dropboxusercontent.com/u/44338461/1.png https://dl.dropboxusercontent.com/u/44338461/2.png

+0

И вызывается метод 'onCellEdit'? –

ответ

0
Conjunto c = adminBO.actualizarConjunto(conjunto); 
mensaje = new FacesMessage("Se creo exitosamente"); 
conjunto=new Conjunto(); 

Вы создаете новый Conjunto ... вы уверены, что обновление adminBO.actualizarConjunto?

return c; 

Также вы возвращаете c, но делать что-либо с ним в onCellEdit, странно.