Combos dependentes ice faces

3 respostas
S

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: cidDAO.getByEstado(selectedEmpresa.getEstado().getIdEstado())) {” está com erro

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?

3 Respostas

walacy

Brother,

dá uma lida nesse tópico: http://www.guj.com.br/posts/list/88137.java

Fala sobre essa integração do Richfaces com o Icefaces…

Não testei, mas pelo que li não funciona…

Abraço!

walacy

E se funcionar, o “reRender” com A4J não é assim “re-render”… é assim reRender… :wink:

S

como faço para compilar o método:

...  
     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: cidDAO.getByEstado(selectedEmpresa.getEstado().getIdEstado())) {” está com erro

Criado 18 de março de 2010
Ultima resposta 18 de mar. de 2010
Respostas 3
Participantes 2