0 Replies Latest reply on Oct 22, 2007 6:30 PM by Juan Manuel Pache Marconell

    Issue with jsf and datamodel selection

    Juan Manuel Pache Marconell Newbie

      Hello, 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>