Dependent comboBox returns null
carlos_navarrete Aug 2, 2009 12:31 PMHi everybody I am a student in Mexico and I have a problem with comboBox and inplaceselect components of richfaces I am trying to do a dependent select but the second comboBox returns null as value.
the code:
view.xhtml
<h:outputText value="Escoge tu estado:"/> <rich:comboBox required="true" requiredMessage="Oops no puede ser nulo" id="estadoActual" value="#{usuario.estadoActual}" valueChangeListener="#{usuario.cambio}" defaultLabel="Da Click aquÃÂ"> <f:selectItems value="#{usuario.estados}"/> <a4j:support event="onselect" reRender="items, label" ajaxSingle="true"/> <rich:beanValidator summary="a"/> </rich:comboBox> <rich:message for="estadoActual"> <f:facet name="passedMarker"> <h:graphicImage value="/img/passed.gif" /> </f:facet> <f:facet name="errorMarker"> <h:graphicImage value="/img/error.gif" /> </f:facet> </rich:message> <a4j:outputPanel id="label"> <h:outputText value="Escoge una región:" rendered="#{!empty usuario.regionarray}"/> </a4j:outputPanel> <a4j:outputPanel id="items"> <rich:comboBox id="regionActual" required="true" requiredMessage="Oops no puede ser nulo" value="#{usuario.regionActual}" rendered="#{!empty usuario.regionarray}" defaultLabel="Da Click aquÃÂ"> <f:selectItems value="#{usuario.regionarray}"/> <rich:beanValidator summary="b"/> </rich:comboBox> </a4j:outputPanel> <rich:message for="regionActual"> <f:facet name="passedMarker"> <h:graphicImage value="/img/passed.gif" /> </f:facet> <f:facet name="errorMarker"> <h:graphicImage value="/img/error.gif" /> </f:facet> </rich:message>
usuario.java
@Transient private Estados es=new Estados(); @Transient public List<SelectItem> estados=es.getEstados(); @Transient public List<SelectItem> regionarray=null; @Transient public List<SelectItem> getEstados(){ return estados; } @Transient public void setEstados(List<SelectItem> estados){ this.estados=estados; } @Transient public List<SelectItem> getRegionarray(){ return regionarray; } @Transient public void setRegionarray(List<SelectItem> regionarray){ this.regionarray=regionarray; } @Transient public void cambio(ValueChangeEvent evento){ if (((String)evento.getNewValue()).equals("mexico")) { regionarray=es.getRegiones("mexico"); } if (((String)evento.getNewValue()).equals("aguascalientes")) { regionarray=es.getRegiones("aguascalientes"); } } public String getEstadoActual() { return estadoActual; } public void setEstadoActual(String estadoActual) { this.estadoActual = estadoActual; } public String getRegionActual() { return regionActual; } public void setRegionActual(String regionActual) { this.regionActual = regionActual; }
Estados.java
public class Estados { List<SelectItem> lista=new ArrayList<SelectItem>(); List<SelectItem> lista1=new ArrayList<SelectItem>(); SelectItem item=null; SelectItem item1=null; public List<SelectItem> getEstados(){ item=new SelectItem("mexico","México"); lista.add(item); item=new SelectItem("aguascalientes","Aguascalientes"); lista.add(item); return lista; } public List<SelectItem> getRegiones(String estadoseleccionado){ lista1.clear(); if(estadoseleccionado.equals("mexico")){ item1=new SelectItem("primero","Primero"); lista1.add(item1); item1=new SelectItem("segundo","Segundo"); lista1.add(item1); return lista1; } if(estadoseleccionado.equals("aguascalientes")){ item1=new SelectItem("primero12","Primero12"); lista1.add(item1); item1=new SelectItem("segundo12","Segundo12"); lista1.add(item1); return lista1; } return null; } }
registro.java (the stateful bean only for tests)
@Stateless @Name("registro") public class Registro implements IRegistro{ @In(required=false) private Usuario usuario; @PersistenceContext private EntityManager entityManager; public String alta(){ System.out.println("Mayor: "+usuario.getEstadoActual()); System.out.println("Mayor: "+usuario.getRegionActual()); return null; } }
The problem is that registro.java print in the console:
Mayor: mexico
Mayor: null
Could anyone please help me about why regionActual is null instead of primero or segundo??
I followed this example http://livedemo.exadel.com/richfaces-demo/richfaces/support.jsf?tab=selects&cid=2725778 so i don't know why my code doesn't work
thank you very much for your time