Bom dia,
Estou tentando fazer uma tela de cadastro, com selectonemenu aninhados, com ao selecionar o estado, o combo de cidades sendo atualizado. Meu xhtml ficou da seguinte forma:
{
}
No entanto, o método estadoProducer.onEstadoChange, só funciona quando seleciono a opção de Selecione, com itemValue setado para "". Fora isso, nada acontece no meu sistema e o combo das cidades não é atualizado:
Abaixo meus controllers: { private static final long serialVersionUID = 1L;
private Estado estadoSelecionado;
@Inject private EstadoDAO estadoDao;
@Inject private CidadeDAO cidadeDao;
private List estados; private List cidades;
@PostConstruct public void init(){ System.out.println("[EstadoProducer]: criando um novo EstadoProducer"); }
public Estado getEstadoSelecionado() { return estadoSelecionado; }
public void setEstadoSelecionado(Estado estadoSelecionado) { System.out.println("estado selecionado"); System.out.println(estadoSelecionado.getNmEstado()); this.estadoSelecionado = estadoSelecionado; }
public List getCidades() { List cidadeslist = cidadeDao.getMunicipioPorEstado(27); ArrayList cidadesTemp = new ArrayList(cidadeslist.size()); for(Municipio m: cidadeslist){ cidadesTemp.add(new SelectItem(m, m.getNmMunicipio())); } cidades = cidadesTemp; return cidades; }
public void setCidades(List cidades) { System.out.println("Pegando as cidades"); System.out.println("Estado: " + estadoSelecionado.getNmEstado()); this.cidades = cidades; }
public void setEstados(List estados) { this.estados = estados; }
public List getEstados(){ List estadoslist = estadoDao.getAllEstados(); estados = new ArrayList(estadoslist.size()); for(Estado e: estadoslist){ estados.add(new SelectItem(e, e.getNmEstado())); } return estados; }
public void onEstadoChange(){ List cidadeslist = cidadeDao.getMunicipioPorEstado(24); ArrayList cidadesTemp = new ArrayList(cidadeslist.size()); for(Municipio m: cidadeslist){ cidadesTemp.add(new SelectItem(m, m.getNmMunicipio())); } cidades = cidadesTemp; } }
Não consigo entender o que está saindo errado. Como não tem nenhum exemplo do tipo no treinamento, poderiam me dar uma luz?