![](/img/trans.png)
[英]Primefaces In cell editing data table event.getNewValue() sends the old value to the bean
[英]PrimeFaces : Data Table cell editing
我们遇到了一个更新问题,字段仅在视觉上发生了变化,它在数据库和列表中继续相同。 删除作品。
这是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>
这是bean:
@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
Conjunto c = adminBO.actualizarConjunto(conjunto);
mensaje = new FacesMessage("Se creo exitosamente");
conjunto=new Conjunto();
您正在创建一个新的Conjunto
...您确定adminBO.actualizarConjunto
正在更新吗?
return c;
另外,您将返回c
但是在onCellEdit
中onCellEdit
进行了任何处理,这很奇怪。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.