boa noite pessoal.
Estou criando uma aplicação com ice faces, e preciso incluir combo estado e combo cidade(dependente do estado).
meus codigos:
faces:
public class EmpresaFace {
private EmpresaDAO empDAO = new EmpresaDAO();
private EstadoDAO estDAO = new EstadoDAO();
private CidadesDAO cidDAO = new CidadesDAO();
private Empresa selectedEmpresa;
private List<Empresa> empresa;
...
public void setSelectedEmpresa(Empresa selectedEmpresa) {
this.selectedEmpresa = selectedEmpresa;
}
...
public List<SelectItem> getEstados() throws ClassNotFoundException, SQLException {
List<SelectItem> toReturn = new LinkedList<SelectItem>();
for (Estado est: estDAO.getAllEstado()) {
toReturn.add(new SelectItem(est,est.getUf()));
}
return toReturn;
}
...
public List<SelectItem> getCidadesByEstado() throws ClassNotFoundException, SQLException {
List<SelectItem> toReturn = new LinkedList<SelectItem>();
for (Cidades cid: cidDAO.getByEstado(selectedEmpresa.getEstado().getIdEstado())) {
toReturn.add(new SelectItem(cid,cid.getCidade()));
}
return toReturn;
}
...
A linha “for (Cidades cid: .getIdEstado())) {” está com errocidDAO.getByEstado(selectedEmpresa.getEstado()
dao
public class CidadesDAO extends DataBaseUtil {
private static final long serialVersionUID = 1L;
private EstadoDAO estDAO = new EstadoDAO();
...
public Cidades getByEstado(int idEst) throws SQLException, ClassNotFoundException {
PreparedStatement ps = (PreparedStatement) getPreparedStatement("SELECT * FROM SIGAE.CIDADE WHERE ID_ESTADO = ?");
ps.setInt(1, idEst);
ResultSet rs = ps.executeQuery();
if (!rs.next()) return null;
Cidades toReturn = new Cidades();
populateCidades(toReturn, rs);
rs.close();
ps.close();
return toReturn;
}
...
Esta classe / metodo foi testado e funciona
.jspx
...
<ice:outputLabel value="uf:"/>
<!-- combo 1 -->
<ice:selectOneMenu id="estado" value="#{EmpresaFace.selectedEmpresa.estado}">
<f:selectItems binding="#{EmpresaFace.estados}"/>
<f:converter converterId="EstadoConversor"/>
<a4j:support event="onchange" actionListener="#{EmpresaFace.selectedEmpresa.cidade}" re-render ="estado,cidade"/>
</ice:selectOneMenu>
<ice:outputLabel value="cidade:"/>
<!-- combo 2 -->
<ice:selectOneMenu id="cidade" binding ="#{EmpresaFace.selectedEmpresa.cidade}">
<f:selectItems value ="#{EmpresaFace.cidades}"/>
<f:converter converterId="CidadeConversor"/>
</ice:selectOneMenu>
...
a linha “<a4j:support event=“onchange” actionListener=”#{EmpresaFace.selectedEmpresa.cidade}" re-render =“estado,cidade”/>" apresenta erro
podem me ajudar?
