Issue with jsf and datamodel selection
jumapama Oct 22, 2007 6:30 PMHello, i have a problem with a table in jboss. I want to delete a row using a @DataModelSelection. Table renders well with the delete button link to delete, but when i press it doesnt work, the row isnt deleted.
This is the code of the jsf page and stateless bean:
Stateless: @Name("clienteFacade") @Stateless public class ClienteFacade implements ClienteFacadeLocal{ @In(create=true) private EntityManager entityManager; @Logger private Log log; @DataModel private List<Movimiento> listadoMovimientos; @DataModel private List<Traspaso> listadoTraspasos; @DataModel private List<Transferencia> listadoTransferencias; @DataModel private List<Tarjeta> listadoTarjetas; @DataModel private List<Movimiento> resumenTransferencias; @DataModel private List<Movimiento> resumenTarjetas; @DataModel private List<Domiciliacion> listadoDomiciliaciones; @DataModelSelection(value="listadoDomiciliaciones") private Domiciliacion domiciliacion; public String crearTransferencia(Cliente cliente,Cuenta cuentaOrigen, Cuenta cuentaDestino,Float saldo){ if (saldo<=0)return "errorIntroduzcaSaldo"; float f=cuentaOrigen.getSaldo()-saldo; if (f<0)return "errorSaldoTransferencia"; if(cuentaOrigen.equals(cuentaDestino))return "errorTransferenciaCuentaIden"; cuentaOrigen.setSaldo(cuentaOrigen.getSaldo()-saldo); cuentaDestino.setSaldo(cuentaDestino.getSaldo()+saldo); log.debug("Se actualiza el saldo de la cuenta #{cuentaOrigen.idCuenta}"); entityManager.merge(cuentaOrigen); log.debug("Se actualiza el saldo de la cuenta #{cuentaDestino.idCuenta}"); entityManager.merge(cuentaDestino); Transferencia transferencia=new Transferencia( cuentaOrigen.getIdCuenta(),cuentaDestino.getIdCuenta()); Date fecha=new Date(); transferencia.setFechaOperacion(fecha); transferencia.setTraspasoEfectivo(saldo); transferencia.setCliente(cliente); try { log.debug("Se crea una nueva transferencia #{transferencia.idMovimiento}"); entityManager.persist(transferencia); } catch (Exception e) { e.printStackTrace(); } return "null"; } public String crearTraspaso(Cliente cliente,Cuenta cuentaOrigen, Tarjeta tarjetaDestino,Float saldo){ if (saldo<=0)return "errorIntroduzcaSaldo"; float f=cuentaOrigen.getSaldo()-saldo; if (f<0)return "errorSaldoTraspaso"; Date fecha=new Date(); cuentaOrigen.setSaldo(f); tarjetaDestino.setSaldo(tarjetaDestino.getSaldo()+saldo); try { log.debug("Se actualiza el saldo de la cuenta #{cuentaOrigen.idCuenta}"); entityManager.merge(cuentaOrigen); log.debug("Se actualiza el saldo de la cuenta #{cuentaDestino.idCuenta}"); entityManager.merge(tarjetaDestino); } catch (Exception e) { e.printStackTrace(); } Traspaso traspaso=new Traspaso(cuentaOrigen.getIdCuenta(), tarjetaDestino.getNumeroTarjeta()); traspaso.setFechaOperacion(fecha); traspaso.setTraspasoEfectivo(saldo); traspaso.setCliente(cliente); try { log.debug("Se crea un nuevo traspaso #{traspaso.idMovimiento}"); entityManager.persist(traspaso);} catch (Exception e) { e.printStackTrace(); } return "null"; } @SuppressWarnings("unchecked") @Factory("listadoMovimientos") public List<Movimiento> listarMovimientos(){ List<Movimiento> resultList = entityManager.createQuery("Select o FROM Movimiento o " + "WHERE o.cliente = #{user}").getResultList(); return resultList; } @SuppressWarnings("unchecked") @Factory("listadoTraspasos") public List<Traspaso> listarTraspasos(){ List<Traspaso> resultList = entityManager.createQuery("Select o FROM Traspaso o " + "WHERE o.cliente = #{user}").getResultList(); return resultList; } @SuppressWarnings("unchecked") @Factory("resumenTarjetas") public List<Movimiento> resumenTarjetas(){ List<Movimiento> resultList = entityManager.createQuery("Select m from Movimiento m," + "Traspaso t where t.tarjetaDestino = #{card.numeroTarjeta} and m.idMovimiento" + "=t.idMovimiento").getResultList(); return resultList; } @SuppressWarnings("unchecked") @Factory("listadoTransferencias") public List<Transferencia> listarTransferencias(){ List<Transferencia> resultList = entityManager.createQuery("Select o FROM Transferencia o " + "WHERE o.cliente = #{user}").getResultList(); return resultList; } @SuppressWarnings("unchecked") @Factory("resumenCuentas") public List<Movimiento> resumenCuentas(){ List<Movimiento> resultList = entityManager.createQuery("Select m from Movimiento m," + "Transferencia t " +"where (t.cuentaOrigen = #{account.idCuenta} " + "or t.cuentaDestino = #{account.idCuenta}) and m.idMovimiento=" + "t.idMovimiento").getResultList(); List<Movimiento> rs = entityManager.createQuery("Select m from Movimiento m,Traspaso t " + "where t.cuentaOrigen = #{account.idCuenta} and m.idMovimiento=t.idMovimiento") .getResultList(); resultList.addAll(rs); return resultList; } @SuppressWarnings("unchecked") @Factory("listadoTarjetas") public List<Tarjeta> listarTarjetas (Cliente cliente){ List<Tarjeta> resultList = entityManager.createQuery("Select Object(o) FROM Movimiento o " + "WHERE o.cliente = #{user}").getResultList(); return resultList; } @SuppressWarnings("unchecked") @Factory("listadoCuentas") public List<Cuenta> listarCuentas (Cliente cliente){ List<Cuenta> resultList = entityManager.createQuery("Select Object(o) FROM Cuenta o " + "WHERE o.cliente = #{user}").getResultList(); return resultList; } @SuppressWarnings("unchecked") @Factory("listadoDomiciliaciones") public List<Domiciliacion> listarDomiciliaciones(){ List<Domiciliacion> resultList = entityManager.createQuery("Select Object(o) FROM Domiciliacion o WHERE o.cliente " + "= #{user}").getResultList(); return resultList; } public String bajaDomiciliacion(){ try{ Domiciliacion borrarDom=entityManager.merge(domiciliacion); entityManager.remove(borrarDom); } catch (Exception e) { e.printStackTrace(); } listarDomiciliaciones(); return "null"; } }
JSF page: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en"> <f:view> <ui:insert name="header"> <ui:include src="header.xhtml" /> </ui:insert> <table bgColor="ABBBB" width="60%" border="0" cellspacing="0" cellpadding="4" align="center"> <tr> <td> <h:dataTable value="#{listadoDomiciliaciones}" var="dom" border="1"> <h:column> <f:facet name="header"> <h:outputText value="IDMovimiento" /> </f:facet> <h:outputText value="#{dom.idMovimiento}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Fecha" /> </f:facet> <h:outputText value="#{dom.fechaOperacion}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Efectivo" /> </f:facet> <h:outputText value="#{dom.traspasoEfectivo}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Cuenta Origen" /> </f:facet> <h:outputText value="#{dom.cuentaOrigen}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Cuenta Destino" /> </f:facet> <h:outputText value="#{dom.cuentaDestino}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Concepto" /> </f:facet> <h:outputText value="#{dom.concepto}" /> </h:column> <h:column> <f:facet name="header"> <h:outputText value="Domiciliador" /> </f:facet> <h:outputText value="#{dom.domiciliador}" /> </h:column> <h:column> <h:commandButton value="Baja" action="#{clienteFacade.bajaDomiciliacion}" /> </h:column> </h:dataTable> </td> </tr> </table> <ui:insert name="footer"> <ui:include src="footer.xhtml" /> </ui:insert> </f:view> </html>