Stateless-view-entity
pramirezrey Jul 29, 2009 3:06 PMHello,
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.
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.