0 Replies Latest reply on Jul 2, 2009 3:45 AM by Roberto Cadena

    Reset Datamodel

    Roberto Cadena Newbie

      Hi Leo.
           
      I have a datamodel that is loaded with a select to a table (category), and shown on a page (listarCategoria.xhtml), on the same page I do a search on the table (category), the datamodel is updated but only for view in the page (listarCategoria.xhtml), my problem is that when I choose one of the categories of result of the search, the datamodelseleccion is loaded with the object of the datamodel initial.
      How can I update the datamodel?


      Help me please.


      ¡¡¡¡¡¡Excuse my English is not very good.!!!!!












      CategoriaAction.java




      @Stateless
      @Restrict("#{identity.loggedIn}")
      @Name("categoriaAction")
      public class CategoriaAccion implements CategoriasOP, Serializable{
           @PersistenceContext(unitName="sysRec")
           private EntityManager em;
      
           @In
           private FacesMessages facesMessages;
           
           @DataModel(scope=ScopeType.PAGE)
           private List<Categoria> listarCategorias=null;
           
           @Factory("listarCategorias")
           public void getListarCategorias(){
                listarCategorias=null;
                if(listarCategorias==null){
                     getNextListarCategorias();
                }
           }
           
           public void getNextListarCategorias(){
                if(categoria==null){
                     categoria=new Categoria();
                     categoria.setCateCodigo("");
                     categoria.setCateDescripcion("");
                }
                     
                listarCategorias = em.createQuery("select c from Categoria c where " +
                          "lower(c.cateCodigo) like :search1 and " +
                          "lower(c.cateDescripcion) like :search2 " +
                          "order by c.cateCodigo asc")
                          .setParameter("search1", "%" + categoria.getCateCodigo() + "%")
                          .setParameter("search2", "%"+ categoria.getCateDescripcion() +"%")
                          .getResultList();
                categoria =null;
           }
           
           @In(required=false)
           private Categoria categoria = new Categoria();
           public Categoria getCategoria(){
                return categoria;
           }
           
           
           @DataModelSelection
           private Categoria categoriaSeleccionada;
           
           @In(required=false)
           @Out(required=false, scope=ScopeType.SESSION)
           private Categoria categoriaEditar;
           
           
           public String insertar(){
                listarCategorias=null;
                em.persist(categoriaEditar);
                getListarCategorias();
                facesMessages.add("Registro guardado exitosamente");
                return "regresar";
           }
           
           public String editar(){
                listarCategorias=null;
                     flagNuevo=false;
                     categoriaEditar = categoriaSeleccionada;
                return "editar";
           }
           
           public String guardar(){//guardar de editar
                listarCategorias=null;
                Categoria c = em.find(Categoria.class, categoriaEditar.getCateSec());
                c.setCateCodigo(categoriaEditar.getCateCodigo());
                c.setCateDescripcion(categoriaEditar.getCateDescripcion());
                
                facesMessages.add("Registro actualizado exitosamente");
                return "irCategoria";
           }
           
           public String eliminar(){
                listarCategorias=null;
                Categoria c = em.find(Categoria.class, categoriaEditar.getCateSec());
                em.remove(c);
                getListarCategorias();
                facesMessages.add("Registro eliminado exitosamente");
                return "regresar";
           }
           
           public String buscar(){
                listarCategorias=null;
                getListarCategorias();
                return "irListar";
           }
           
           
           public String mostrar(){
                listarCategorias=null;
                categoriaEditar = categoriaSeleccionada;
                return "irCategoria";
           }
           
           public String nuevo(){
                listarCategorias=null;
                categoriaEditar=new Categoria();
                flagNuevo=true;
                return "editar";
           }
           
           @Out(required=false, scope=ScopeType.SESSION)
           private boolean flagNuevo;//verifica si se esta creando nuevo o editando
      
           @In(required=false)
           private String txtCodigo; //carga codigo para la busqueda 
           @In(required=false)
           private String txtDescripcion;//carga codigo para la busqueda
           
      }
      





      ListarCategoria.xhtml

      <ui:define name="cuerpo">
           <h1>CATEGORIAS!</h1>
          <h:form id="categoriaSearch" styleClass="edit">
      
              <rich:simpleTogglePanel label="Buscar Categoria" switchType="ajax">
                   <s:decorate template="/layout/display.xhtml">
                      <ui:define name="label">Codigo</ui:define>
                      <h:inputText id="cateCodigo" value="#{categoria.cateCodigo}"/>
                  </s:decorate>
      
                  <s:decorate template="/layout/display.xhtml">
                      <ui:define name="label">Descripcion</ui:define>
                      <h:inputText id="cateDescripcion" value="#{categoria.cateDescripcion}"/>
                  </s:decorate>
              </rich:simpleTogglePanel>
      
              <div class="actionButtons">
                  <h:commandButton id="search" value="Buscar" action="#{categoriaAction.buscar}"/>
                  <s:button id="reset" value="Limpiar" includePageParams="false" action="#{categoriaAction.buscar}"/>
              </div>
          </h:form>
      
          <rich:panel>
              <f:facet name="header">Resultados de la Busqueda</f:facet>
               <div class="results" id="categoriaList">
                   <h:form id="otra">
                      <h:outputText value="No se han encontrado resultados" rendered="#{listarCategorias.rowCount==0}" />
                    <rich:dataTable id="datos"
                      var="lista"
                      value="#{listarCategorias}" rows="10">
                      <rich:column sortBy="#{lista.cateSec}">
                              <f:facet name="header">Secuencial </f:facet>
                             <h:outputText value="#{lista.cateSec}"/>
                      </rich:column>
                      <rich:column sortBy="#{lista.cateCodigo}">
                            <f:facet name="header">Codigo</f:facet>
                            <h:outputText value="#{lista.cateCodigo}"/>
                      </rich:column>
                      <rich:column sortBy="#{lista.cateDescripcion}">
                            <f:facet name="header">Descripcion </f:facet>
                            <h:outputText value="#{lista.cateDescripcion}"/>
                      </rich:column>
                      <rich:column styleClass="action">
                            <f:facet name="header">Que desea Hacer</f:facet>
                            <s:link action="#{categoriaAction.editar}" value="Editar" ></s:link>
                            <s:link action="#{categoriaAction.mostrar}" value="ver" ></s:link>
                      </rich:column>
                    </rich:dataTable>
                    <rich:datascroller  id="scroll" for="datos" rendered="#{listarCategorias.rowCount>10}"/>
                  </h:form>
               </div>
          </rich:panel>
              
          <s:div styleClass="actionButtons">
              <s:button action="#{categoriaAction.nuevo}"
                          id="crear"
                 propagation="none"
                       value="Crear Nueva Categoria">
              </s:button>
          </s:div>
      </ui:define>