h:selecOneMenu not change!
3rror32 Oct 13, 2010 6:46 PMHi, 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!