我们遇到更新问题,字段只能直观地更改,它在数据库和列表中继续相同。删除有效。
这是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
答案 0 :(得分:0)
Conjunto c = adminBO.actualizarConjunto(conjunto);
mensaje = new FacesMessage("Se creo exitosamente");
conjunto=new Conjunto();
您正在创建新的Conjunto
...您确定adminBO.actualizarConjunto
正在更新吗?
return c;
此外,您正在返回c
,但在onCellEdit
中执行任何操作,很奇怪。