【问题标题】:PrimeFaces : Data Table cell editingPrimeFaces:数据表单元格编辑
【发布时间】:2013-06-06 23:39:24
【问题描述】:

我们在更新时遇到问题,字段仅在视觉上发生变化,它在数据库和列表中继续相同。删除作品。

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

【问题讨论】:

  • 你的方法onCellEdit被调用了吗?

标签: java jsf web primefaces


【解决方案1】:
 Conjunto c = adminBO.actualizarConjunto(conjunto);
 mensaje = new FacesMessage("Se creo exitosamente");
 conjunto=new Conjunto();

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

return c;

你还返回c,但在onCellEdit中用它做任何事情,奇怪。

【讨论】:

    猜你喜欢
    • 2017-07-02
    • 2014-08-03
    • 1970-01-01
    • 2012-02-21
    • 2013-08-22
    • 2014-01-20
    • 2023-03-25
    • 1970-01-01
    • 2013-05-16
    相关资源
    最近更新 更多