0 Replies Latest reply on Oct 13, 2010 6:46 PM by Carlos Hdz

    h:selecOneMenu not change!

    Carlos Hdz Newbie

      Hi, I'm new in this framework, this is my prioblem, the vale is null  = ( and my component combobox is unafected to change!

       

       

      Hola, soy nuevo en el foro y en el framework, espero no molestar mucho, Si esta mal ubicado el post, porfavor podrian moverlo o notificarme o ambas, Gracias!!

       

      No se si ya halla un ejemplo con BD sobre este tema, asi que aqui va.

       

       

      Es el uso de dos combos

      Pais, Estado

       

      Donde tienen que cambiar con Ajax conforme la busqueda se mueva que no marque error pero  sigo sin encontrar el por que no me cambia el estado o por que me marca error.

       

       

      //************************************************************************************* Pais

      @Entity
      @Table(name="rhnomPaises")
      @Name("rhnomPaises")
      public class RhnomPaises implements Serializable {

          
          private String pais;
          private String nombre;

          ....

       

      }

       

      //*************************************************************************************

      @Name("paisManager")
      @Scope(ScopeType.SESSION)
      public class PaisManager {

       

          @Out(required=false)
          private List<SelectItem> pais = new ArrayList<SelectItem>();
         
          @In
          private    EntityManager entityManager;
               
            public void setPais(List<SelectItem> pais) {
              this.pais = pais;
          }

       

            @SuppressWarnings("unchecked")
            public List<SelectItem> getPais() {
                pais.clear();
               
                Query query = entityManager.createQuery("SELECT e FROM RhnomPaises AS e");
                  List<RhnomPaises> paises = query.getResultList();
               
                   for(RhnomPaises e : paises){
                      pais.add(new SelectItem(e.getPais(), e.getNombre()));
                    }

       

                return pais;
          }
           
      }

       

      //*************************************************************** Estado

      @Entity
      @Table(name="rhnomEstados")
      @Name("rhnomEstados")
      public class RhnomEstados implements Serializable {

           
          private String estado;
          private String nombre;
          private String pais;

      ......

       

      }

      /*****************************************************************************

       

      @Name("estadoManager")
      @Scope(ScopeType.SESSION)
      public class EstadoManager {

       

          @Logger
          private Log log;
         
          RhnomPaises pais = new  RhnomPaises();
         
          @Out(required=false)
          private List<SelectItem> estado = new ArrayList<SelectItem>();


         
          @In
          private    EntityManager entityManager;
               
            public void setEstado(List<SelectItem> estado) {
              this.estado = estado;
          }

       

       

            @SuppressWarnings("unchecked")
            public List<SelectItem> getEstado() {
               

                log.info("Value of Pais  :::: " + pais.getPais() + " ::::");  //  <<--   This value is null =(  pais.getPais();

               
                estado.clear();       
               
               
                if(pais.getPais() != null){
                    Query query = entityManager.createQuery("SELECT e FROM RhnomEstados AS e "
                    + " WHERE e.pais = :pais ");
                    query.setParameter("pais", pais.getPais());  //  <<--   This part is affected by null's

       

                    List<RhnomEstados> estados = query.getResultList();
                    
                    for(RhnomEstados e : estados){
                            estado.add(new SelectItem(e.getEstado(), e.getNombre(), e.getPais()));
                          }
                }
               
               
              return estado;       
          }

      //**************************************************************** XHTML

       

           <h:outputLabel>Pais:</h:outputLabel>
              <h:selectOneMenu value="#{paisManager.pais}" id="pais">
                  <f:selectItems value="#{paisManager.pais}" var="pais"
                      label="#{pais.nombre}" />
                  <a:support event="onchange" reRender="est" ajaxSingle="true" />
              </h:selectOneMenu>
              <br />

       

              <h:outputLabel>Estado:</h:outputLabel>
              <h:selectOneMenu value="#{estadoManager.estado}" id="est"
                  rendered="true" valueChangeListener="#{paisManager.pais}">
                  <f:selectItems value="#{estadoManager.estado}" var="estado"
                      label="#{estado.nombre}" />
              </h:selectOneMenu>

       

       

      Tnks!

       

      P.S. if is morest you can writte in english!! tnks!