PrimeFaces:数据表单元格编辑

时间:2013-06-06 23:39:25

标签: java jsf web primefaces

我们遇到更新问题,字段只能直观地更改,它在数据库和列表中继续相同。删除有效。

这是de 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

1 个答案:

答案 0 :(得分:0)

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

您正在创建新的Conjunto ...您确定adminBO.actualizarConjunto正在更新吗?

return c;

此外,您正在返回c,但在onCellEdit中执行任何操作,很奇怪。