0 Replies Latest reply on Jul 29, 2009 3:06 PM by pramirezrey

    Stateless-view-entity

    pramirezrey
      Hello,

      I have:

      *One entity called ChrMemoria
      *One xhtml like that:

        
      ` <h:form id="altaMemoriaForm">

              <rich:panel>
              <f:facet name="header">Alta de Memorias</f:facet>
             
              <s:decorate id="nombre" template="layout/display.xhtml">
                  <ui:define name="label">Nombre</ui:define>
                  <h:inputText value="#{chrMemoria.nombre}"/>
              </s:decorate>
             
              <s:decorate id="codigo" template="layout/display.xhtml">
                  <ui:define name="label">Codigo</ui:define>
                  <h:inputText value="#{chrMemoria.codigo}"/>
              </s:decorate>
             
              <s:decorate id="departamento" template="layout/display.xhtml">
                  <ui:define name="label">Departamento</ui:define>
                  <h:inputText value="#{chrMemoria.departamento}"/>
              </s:decorate>  

              <s:decorate id="delegacion" template="layout/display.xhtml">
                  <ui:define name="label">Delegacion</ui:define>
                  <h:inputText value="#{chrMemoria.delegacion}"/>
              </s:decorate>


              <s:decorate id="FInicioServicio" template="layout/display.xhtml">
                  <ui:define name="label">F inicio servicio</ui:define>
                      <rich:calendar id="FInicioServ"
                                value="#{chrMemoria.FInicioServicio}" datePattern="MM/dd/yyyy" />
              </s:decorate>
                

              <s:decorate id="descripcion" template="layout/display.xhtml">
                  <ui:define name="label">Descripcion</ui:define>
                  <h:inputText value="#{chrMemoria.descripcion}"/>
              </s:decorate>



              <div style="clear:both"/>

              </rich:panel>

          <div class="actionButtons">
                     
                               
               <h:commandButton type="submit" id="create" value="Crear"
                       action="#{chrMemoriaEdit.altaMemoria}"/>                

              <s:button id="delete"
                       value="Borrar"
                       />
                      
           

          </div>

          </h:form>`



      *One stateless like that:



      `
      @Stateless
      @Name("chrMemoriaEdit")
      public class ChrMemoriaEdit implements ChrMemoriaEditInterface{

              /*Logger*/
              @Logger("chrono_cc")
              Log log;       

              /*Mensajes*/
              @In private FacesMessages facesMessages;

              /*Definicion de los beans que necesitamos para el manejo de la clase*/
              @In(required=false) @Out(required=false)
              private ChrMemoria chrMemoria;
             
              @In(required=false) @Out(required=false)
              private ChrUsuario chrUsuario;
             
              @PersistenceContext
              EntityManager em;
             
             
              public ChrMemoriaEdit(){
                      chrMemoria = new ChrMemoria();
              }
             
             
              /*Metodos definidos en la interfaz*/
             
              /**
               *
               * Da de alta un objeto de tipo memoria en la base de datos
               * Toma los valores del formulario de la vista y los persiste
               *
               * @author ad-delriosanjose
               * @param Sin parametro utilizara el objeto de la vista
               * @return pagina siguiente a la que navegar
               */
              @SuppressWarnings("unchecked")
              public String altaMemoria() {  
                      try {
                             
                             
                              ChrMemoria chrMemoriaNew = new ChrMemoria();
                             
                              //Datos tomados de la vista
                              chrMemoriaNew.setDescripcion(chrMemoria.getDescripcion());
                              chrMemoriaNew.setDelegacion(chrMemoria.getDelegacion());
                              chrMemoriaNew.setCodigo(chrMemoria.getCodigo());
                              chrMemoriaNew.setDepartamento(chrMemoria.getDepartamento());
                              chrMemoriaNew.setFInicioServicio(chrMemoria.getFInicioServicio());
                              chrMemoriaNew.setNombre(chrMemoria.getNombre());
                             
                              //Datos por defecto por ser un alta en memoria
                              //iniciador, fecha de alta, usuario de alta y estado
                              chrMemoriaNew.setChrEstado(new ChrEstado(new Long(1)));
                              chrMemoriaNew.setFAlta(new Date());
                             
                              //Consulta para obtener la informacioncion del usuario
                              //TODO: REvisar obetener el user del bean de session
                             
                              List<ChrUsuario> existing = em.createQuery("select u from CHR_USUARIO where u.USUARIO_ID=1").getResultList();
                              ChrUsuario usuario = (ChrUsuario) existing.get(0);
                             
                              chrMemoriaNew.setChrUsuario(new ChrUsuario(usuario.getUsuarioId()));
                              chrMemoriaNew.setUsrAlta(usuario.getNombre() + usuario.getApellido1() + usuario.getApellido2());                       
                             
                              //Persistimos el objeto
                              em.persist(chrMemoria);                                
                              em.flush();
                             
                              log.info("Memoria dada de alta satisfactoriamente: " +  chrMemoria.getNombre());
                              return "/altaMemoria.xhtml";
                      }
                      catch (Exception e) {
                              facesMessages.add("No se ha podido guardar la memoria.");
                              log.error("Error dando de alta una memoria: " + e.getMessage());
                              e.printStackTrace();
                              return null;
                      }
              }
      }`



      I need to know how the stateless can call the values of chrMemoria that the view has been filling. When i debug the application in the line (chrMemoriaNew.setDescripcion(chrMemoria.getDescripcion());) chrMemoria is null.

      Why? What am i not understanding?

      Thanks for all,
      Pedro.