Help urgente JSF + AJAX

Pessoal tenho o seguinte cenario: 4 combos
1º lista os estados
2º lista as cidades
3º lista as regioes
4º lista os bairros

qdo eu seleciono uma estado ele preenche as cidades e assim sucessivamente para os outros combos, porem estou com um problema… TEM DETERMINADA HORA que ele me traz o seguinte erro:

[quote]03/04/2008 10:23:22 com.sun.faces.lifecycle.RenderResponsePhase execute
INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=formPessoa:selectCidadePessoas[severity=(ERROR 2), summary=(formPessoa:selectCidadePessoas: Validation Error: Value is not valid), detail=(formPessoa:selectCidadePessoas: Validation Error: Value is not valid)][/quote]

isso so de vez em qdo. o q me deixa mais revoltado e que eu faco duas vezes o processo igualzinho, digito as mesmas informacoes, e seleciono os mesmos itens e tem hora q ele da o erro e tem hora q nao da…

e assim ele nao chega nem a chamar o metodo pois eu coloquei um println e ele nao chega a mostrar ja da o erro logo de cara… vou mandar o meu JSF e o bean para vcs darem uma olhada

utilizo netbeans + JSF1.2 + richfaces3.1.3

BEAN

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.dnasolution.bean;

import br.com.dnasolution.db.Conexao;
import br.com.dnasolution.objeto.objetoRetorno;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;

/**
*

  • @author Administrador
    */
    public class PessoaBean {

    private String nome = blank;
    private String telefone = blank;
    private String telefoneComercial = blank;
    private String telefoneCelular = blank;
    private String nomeEndereco = blank;
    private String email = blank;
    private String ocupacaoPessoa = blank;
    private int codigoOcupacao = 0;
    private int codigoRegiao = 0;
    private int codigoPartido = 0;
    private int codigoPessoa = 0;
    private int codigoInstituicao = 0;
    private int codigoEstado;
    private int codigoCidade;
    private int codigoZona;
    private int codigoSessaoEleitoral = 0;
    private int codigoZonaEleitoral = 0;
    private int codigoTituloEleitor = 0;
    private int codigoBairro;
    private String result_inserir = blank;
    public static final String SUCESSO_INSERCAO = “success_pessoa”;
    public static final String FALHA_INSERCAO = “failure_pessoa”;
    static Connection con = null;
    static PreparedStatement pStm = null;
    static ResultSet rs;
    static private String blank = “”;
    private ArrayList codigoBairrosAtuacao = new ArrayList();
    private String codigoBairroAtuacao;
    private boolean bairroAtuacao;
    private boolean preCandidato;
    private String retorna;
    private objetoRetorno retorno = new objetoRetorno();
    private Collection cidades = new ArrayList();
    private Collection regioes = new ArrayList();
    private Collection bairros = new ArrayList();

// geters and setters omitidos

/** Creates a new instance of PessoaBean */
public PessoaBean() {
    cidades.add(new SelectItem(0, "Selecione uma Estado"));
    regioes.add(new SelectItem(0, "Selecione uma Cidade"));
    bairros.add(new SelectItem(0, "Selecione uma Regiao"));
}

public Collection getEstado() {
    Collection toReturn = new ArrayList();
    setCodigoBairro(0);
    setCodigoRegiao(0);
    setCodigoCidade(0);
    
    try {
        Connection conexao = Conexao.getInstancia().conectarDb();
        Statement st = conexao.createStatement();
        ResultSet rs = st.executeQuery("SELECT * FROM tb_estado ORDER BY nm_estado");

        toReturn.add(new SelectItem(0, "Selecione um Estado"));
        while (rs.next()) {
            toReturn.add(new SelectItem(rs.getInt("cd_estado"), rs.getString("nm_estado")));
        }

    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
    return toReturn;
}

public void getCidades(ActionEvent evt) {
    cidades.clear();
    regioes.clear();
    regioes.add(new SelectItem(0, "Selecione uma Cidade"));
    bairros.clear();
    bairros.add(new SelectItem(0, "Selecione uma Regiao"));
    try {
        Connection conexao = Conexao.getInstancia().conectarDb();
        Statement st = conexao.createStatement();
        ResultSet rs = st.executeQuery("SELECT * FROM tb_cidade WHERE cd_estado = " + codigoEstado + " ORDER BY nm_cidade");

        cidades.add(new SelectItem(0, "Selecione uma Cidade"));
        while (rs.next()) {
            cidades.add(new SelectItem(rs.getInt("cd_cidade"),Integer.toString(rs.getInt("cd_cidade")) + " - " +  rs.getString("nm_cidade")));
        }
        rs.close();

    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
}


public void getRegioes(ActionEvent evt) {
    System.out.println("aquiii");
    regioes.clear();
    bairros.clear();
    bairros.add(new SelectItem(0, "Selecione uma Regiao"));        
    try {
        Connection conexao = Conexao.getInstancia().conectarDb();
        Statement st = conexao.createStatement();
        String sql = "SELECT * FROM tb_regiao WHERE cd_cidade = " + codigoCidade + " ORDER BY nm_regiao";
        System.out.println(sql);
        regioes.add(new SelectItem(0, "Selecione uma Região"));
        ResultSet rs = st.executeQuery(sql);
        while (rs.next()) {
            regioes.add(new SelectItem(rs.getInt("cd_regiao"), rs.getString("nm_regiao")));
        }
        rs.close();
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }

}

public void getBairros(ActionEvent ev) {
    bairros.clear();
    try {
        Connection conexao = Conexao.getInstancia().conectarDb();
        Statement st = conexao.createStatement();

        ResultSet rs = st.executeQuery("SELECT * FROM tb_bairro WHERE cd_regiao = " + codigoRegiao + " ORDER BY nm_bairro");
        bairros.add(new SelectItem(0, "Selecione um Bairro"));
        while (rs.next()) {
            bairros.add(new SelectItem(rs.getInt("cd_bairro"), rs.getString("nm_bairro")));
        }
        rs.close();
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
}

public Collection getZona() {
    Collection toReturn = new ArrayList();
    try {
        Connection conexao = Conexao.getInstancia().conectarDb();
        Statement st = conexao.createStatement();
        String sql = "SELECT * FROM tb_zona WHERE cd_cidade = " + codigoCidade;
        ResultSet rs = st.executeQuery(sql);

        toReturn.add(new SelectItem(0, "Selecione uma Zona"));
        while (rs.next()) {
            toReturn.add(new SelectItem(rs.getInt("cd_zona"), rs.getString("nm_zona")));
        }
        rs.close();
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println(e.getMessage());
    }
    return toReturn;
}

}
[/code]

e o meu JSF

[code]

<rich:modalPanel id=“mp” minHeight=“500” minWidth=“650” height=“500” width=“650” zindex=“100”>
<f:facet name=“header”>
<h:outputText value=“Inclusão de Pessoa” />
</f:facet>
<f:facet name=“controls”>
<h:outputLink value=“javascript:void(0);” onclick=“Richfaces.hideModalPanel(‘mp’)” >
<h:outputText styleClass=“fonte”>fechar</h:outputText>
</h:outputLink>
</f:facet>
<a4j:form id=“formPessoa” ajaxSubmit=“true” ignoreDupResponses=“true” requestDelay=“500”>
<rich:tabPanel switchType=“client” id=“painel” height=“410”>
<rich:tab label=“Dados Pessoa” id=“abaDadosPessoa”>

            <table width="490" border="0" cellpadding="0" cellspacing="0" class="fonte">
                
                <tr>
                    <td height="25" colspan="7">
                    <h:outputLink value="javascript:void(0);" onclick="Richfaces.showModalPanel('mpInstituicao',{width:450, top:100})" styleClass="fonte_menu"><strong>Instituição:</strong></h:outputLink>                                                           </td>
                </tr>
                <tr>
                    <td height="25" colspan="7"><h:selectOneMenu id="selectInstituicao" value="#{pessoa.codigoInstituicao}" styleClass="combo" >
                            <f:selectItems
                                value="#{montaCombo.instituicao}" />
                        </h:selectOneMenu> 
                        <rich:message for="selectInstituicao">
                            <f:facet name="errorMarker">
                                <h:graphicImage  value="/images/error.gif" />  
                            </f:facet>
                    </rich:message>                        </td>
                </tr>                          
                <tr>
                    <td height="25" colspan="7"><h:outputLink value="javascript:void(0);" onclick="Richfaces.showModalPanel('mpOcupacao',{width:450, top:100})" styleClass="fonte_menu"><strong>Ocupação / Cargo:</strong></h:outputLink>                                                          </td>
                </tr>
                <tr>
                    <td height="25" colspan="7"><h:selectOneMenu id="selectOcupacao"
                                                                     value="#{pessoa.codigoOcupacao}" styleClass="combo">
                            <f:selectItems
                                value="#{montaCombo.ocupacao}" />
                    </h:selectOneMenu> </td>
                </tr>  
                <tr>
                    
                    <td height="25" colspan="7">Nome:</td>
                </tr>
                <tr>
                    <td height="25" colspan="7"><h:inputText  id="nome" styleClass="borda_cinza" value="#{pessoa.nome}" size="72" maxlength="250"/></td>
                </tr>
                
                <tr>
                    <td height="25">Sessao Eleit.:</td>
                    <td>&nbsp;</td>
                    <td height="25"><h:outputLink value="javascript:void(0);" onclick="Richfaces.showModalPanel('mpZona',{width:450, top:50});" styleClass="fonte_menu"><strong>Zona Eleit.:</strong></h:outputLink></td>
                    <td>&nbsp;</td>
                    <td width="150">Titulo de Eleitor:</td>
                    <td width="6">&nbsp;</td>
                    <td width="102" class="fonte">Pré-Candidato</td>
                </tr>
                <tr>
                    <td height="25"><h:inputText id="sessao" styleClass="borda_cinza" value="#{pessoa.codigoSessaoEleitoral}"/></td>
                    <td>&nbsp;</td>
                    <td height="25">
                    <h:selectOneMenu id="selectZona"
                                     value="#{pessoa.codigoZonaEleitoral}">
                        <f:selectItems
                            value="#{montaCombo.zona}" />
                    </h:selectOneMenu> 
                    <td>&nbsp;</td>
                    <td><h:inputText id="tituloEleitor" styleClass="borda_cinza" value="#{pessoa.codigoTituloEleitor}"/></td>
                    <td>&nbsp;</td>
                    <td><h:selectBooleanCheckbox value="#{pessoa.preCandidato}" onclick="verificaPreCandidato(this)"/><h:outputText value="Sim" /></td>
                </tr>
                <tr>
                    <td height="10">&nbsp;</td>
                    <td>&nbsp;</td>
                    <td height="10">&nbsp;</td>
                    <td>&nbsp;</td>
                    <td colspan="3">&nbsp;</td>
                </tr>
                <tr>
                    <td width="91" height="25">Telefone:</td>
                    <td width="9">&nbsp;</td>
                    <td width="123" height="25">Telefone Comercial: </td>
                    <td width="9">&nbsp;</td>
                    <td colspan="3">Celular:</td>
                </tr>
                <tr>
                    <td height="25"><h:inputText id="telefone" styleClass="borda_cinza" value="#{pessoa.telefone}"/></td>
                    <td height="25">&nbsp;</td>
                    <td height="25"><h:inputText id="telefoneComercial" styleClass="borda_cinza" value="#{pessoa.telefoneComercial}"/></td>
                    <td height="25">&nbsp;</td>
                    <td height="25" colspan="3"><h:inputText id="telefoneCelular" styleClass="borda_cinza" value="#{pessoa.telefoneCelular}"/></td>
                </tr>
                
                <tr>
                    <td height="25" colspan="7">E-mail:</td>
                </tr>
                <tr>
                    <td height="25" colspan="7">
                        <h:inputText id="email" styleClass="borda_cinza" value="#{pessoa.email}" size="72" maxlength="250" >
                            <f:validator validatorId="dnasolution.ValidaEmail" />
                        </h:inputText>
                        <rich:message for="email">
                            <f:facet name="errorMarker">
                                <h:graphicImage  value="/images/error.gif" />  
                            </f:facet>
                        </rich:message>
                    </td>
                </tr>
                <tr>
                    <td colspan="2"></td>
                    <td colspan="5"></td>
                </tr>
            </table>                        
            
            
        </rich:tab>
        <rich:tab label="Informações de Localização" id="abaLocalizacao">
            <a4j:region>
                <table border="0" class="fonte">
                    <tr>
                        <td height="25" colspan="7">Estado:</td>
                    </tr>
                    <tr>
                        <td height="25" colspan="7">
               <h:selectOneMenu id="selectEstado" value="#{pessoa.codigoEstado}" styleClass="combo" >
                <f:selectItems value="#{pessoa.estado}" />
                <a4j:support event="onchange" reRender="selectCidadePessoas, selectRegiaoPessoas, selectBairroPessoa" ajaxSingle="true" actionListener="#{pessoa.getCidades}" onsubmit="desabilita('selectCidadePessoas','selectRegiaoPessoas','selectBairroPessoa' )" oncomplete="habilita('selectCidade')"/>
            </h:selectOneMenu></td>
                    </tr>
                    <tr>
                        <td height="25" colspan="7">Cidade:</td>
                    </tr>
                    <tr>
                        <td height="25" colspan="7">
            <h:selectOneMenu id="selectCidadePessoas" value="#{pessoa.codigoCidade}" styleClass="combo">
                <f:selectItems value="#{pessoa.cidades}" />
                <a4j:support event="onchange" reRender="selectRegiaoPessoas" ajaxSingle="true" actionListener="#{pessoa.getRegioes}" onsubmit="desabilita('selectRegiaoPessoas','selectBairroPessoa')" oncomplete="habilita('selectRegiaoPessoas','selectBairroPessoa')"/>
            </h:selectOneMenu>   
            </td>
                    </tr>
                    <tr>
                        <td height="25" colspan="7">Região:</td>
                    </tr>
                    <tr>
                        <td height="25" colspan="7">
            <h:selectOneMenu id="selectRegiaoPessoas" value="#{pessoa.codigoRegiao}" styleClass="combo">
                <f:selectItems value="#{pessoa.regioes}" /> 
                <a4j:support event="onchange" reRender="selectBairroPessoa" ajaxSingle="true" actionListener="#{pessoa.getBairros}" onsubmit="desabilita('selectBairroPessoa')" oncomplete="habilita('selectBairroPessoa')"/>
            </h:selectOneMenu> </td>
                    </tr>
                    <tr>
                        <td height="25" colspan="7"><h:outputLink value="javascript:void(0);" onclick="Richfaces.showModalPanel('mpBairro',{width:450, top:100})" styleClass="fonte_menu"><strong>Bairro:</strong></h:outputLink></td>
                    </tr>
                    <tr>
                        <td height="25" colspan="7">
            <h:selectOneMenu id="selectBairroPessoa" value="#{pessoa.codigoBairro}" styleClass="combo">
                <f:selectItems value="#{pessoa.bairros}"  />
            </h:selectOneMenu>                     </td>
                    </tr>
                    <tr>
                        <td height="25" colspan="7">Endereco:</td>
                    </tr>
                    <tr>
                        <td height="25" colspan="7"><h:inputText id="endereco" styleClass="borda_cinza" value="#{pessoa.nomeEndereco}" size="72"/></td>
                    </tr> 
                    <tr>
                        <td height="15" colspan="7"></td>
                    </tr>  
                    <tr>
                        <td height="25" colspan="7"><font color="#990000"><a4j:status id="commonstatus"  startText="Aguarde, buscando.." /></font></td>
                    </tr>  
                    
                </table>
            </a4j:region>
        </rich:tab>
        <rich:tab label="Informações Candidato" id="abaBairroAtuacao">
            <table class="fonte" border="0">
                <tr>
                    <td height="25" ><h:outputLink value="javascript:void(0);" onclick="Richfaces.showModalPanel('mpPartido',{width:450, top:100})" styleClass="fonte_menu"><strong>Partido:</strong></h:outputLink>                                                           </td>
                </tr>
                <tr>
                    <td height="25" ><h:selectOneMenu id="selectPartido" value="#{pessoa.codigoPartido}" styleClass="combo">
                            <f:selectItems
                                value="#{montaCombo.partido}" />
                    </h:selectOneMenu> </td>
                </tr>    
                <tr>
                    <td>Bairros:</td>
                </tr>
                <tr>
                    <td></td>
                </tr>
                
            </table>
            <iframe src="../cadastro_auxiliar/lista_bairro_atuacao.jsf" marginheight="0" marginwidth="0" width="600" height="280" frameborder="0"></iframe>
        </rich:tab>
    </rich:tabPanel>
    <br><div align="center" >
    <a4j:commandButton  value="Cadastrar" onclick="myFunction();"  oncomplete="Richfaces.hideModalPanel('mp')" reRender="selectCandidato"/></div>
    <a4j:jsFunction name="myFunction" data="#{pessoa.retorno}"
                    oncomplete="alerta(data.erro , data.msg)" action="#{pessoa.inserir}">
    </a4j:jsFunction> 
</a4j:form>

<%@ include file="../cadastro_auxiliar/cadastro_instituicao.jsp" %>
<%@ include file="../cadastro_auxiliar/cadastro_bairro.jsp" %>
<%@ include file="../cadastro_auxiliar/cadastro_ocupacao.jsp" %>
<%@ include file="../cadastro_auxiliar/cadastro_partido.jsp" %>
<%@ include file="../cadastro_auxiliar/cadastro_zona.jsp" %>
<%@ include file="../cadastro_auxiliar/cadastro_tipo_instituicao.jsp" %>
<%@ include file="../util/alerta.jsp" %>

</rich:modalPanel>[/code]

Bom dia Cara…

é o seguinte…ele nao vai executar o metodo mesmo…pois esta dando erro…

ele esta falando que o valor da sau combo nao é valido…

na fase de validacao ele ta dando este erro…

coloca um <h:messages> na sua tela que lee printara o erro na tela…

mas da uma olhada no value do combo…

entao cara ele preenche certo… eu mando ele imprimir o q ele esta preenchendo e ele me traz correto, codigo da cidade e o nome… isso q me deixa revoltado…

tanto q eu mandei jogar no text assim? codigo + nome… e ele me imprimiu no combo 1 São Bernardo

:confused: e esse messages ae pra mim nao deu certo… eu coloco mas ele nao mostra nada :confused:

pra ele mostrar a mensagem de erro tem que colocar <rich:message for=“seuId” /> no lugar do h:message. pelo menos aqui comigo só funcionou assim numa aplicação que to fazendo.