Senhores,
Não sei o que há de errado com esse código, mas não consigo obter o id do estado para buscar as cidades. O converter é chamado normal, mas o valor é sempre nullo!!! Estou enlouquecendo!!! Alguém pode me ajudar?
<h:outputLabel value="Estados:" />
<h:selectOneMenu value="#{EmpresaBean.estadoSelecionada}" converter="converterEstado" >
<f:selectItems value="#{EmpresaBean.estados}"/>
<f:ajax event="change" render="cidades" />
</h:selectOneMenu>
<h:selectOneMenu id="cidades" value="#{EmpresaBean.estadoSelecionada}">
<f:selectItems value="#{EmpresaBean.getCidades()}"/>
</h:selectOneMenu>
@ManagedBean(name="EmpresaBean")
@RequestScoped
public class EmpresaBean {
private List<SelectItem> estados;
private List<SelectItem> cidades;
private Estado estadoSelecionada = new Estado();
@SuppressWarnings("unchecked")
public List<SelectItem> getEstados() {
List<Estado> listaEstados= new ArrayList<Estado>();
Session session = HibernateUtil.getSession().openSession();
Criteria c = session.createCriteria(Estado.class);
listaEstados = c.list();
estados = new ArrayList<SelectItem>(listaEstados.size());
for(Estado est:listaEstados){
estados.add(new SelectItem(est,est.getNome()));
}
return estados;
}
@SuppressWarnings("unchecked")
public List<SelectItem> getCidades() {
System.out.println("estado + "+estadoSelecionada.getNome());//VEM SEMPRE NULLO!!!!!!!!!!!!!!
List<Cidade> listaCid= new ArrayList<Cidade>();
Session session = HibernateUtil.getSession().openSession();
Criteria c = session.createCriteria(Cidade.class);
c.add(Expression.sql("est_fk=1"));
listaCid = c.list();
cidades = new ArrayList<SelectItem>(listaCid.size());
for(Cidade cidade:listaCid){
cidades.add(new SelectItem(cidade,cidade.getNome()));
}
return cidades;
}
public void setEstados(List<SelectItem> estados) {
this.estados = estados;
}
public Estado getEstadoSelecionada() {
return estadoSelecionada;
}
public void setEstadoSelecionada(Estado estadoSelecionada) {
this.estadoSelecionada = estadoSelecionada;
}
}