Help urgente JSF + AJAX

3 respostas
fabioebner

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:

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)]

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
/*
 * 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<Integer> codigoBairrosAtuacao = new ArrayList<Integer>();
    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;
    }

}
e o meu JSF
<script language='javascript'>
             function desabilita(){
                parametros = desabilita.arguments ;
                for(x = 0; x < parametros.length; x++){
                    var obj = document.getElementById('formPessoa:'+parametros[x]);
                    obj.setAttribute('disabled','false');
                }
            }
            function habilita(){
                parametrosHabilita = habilita.arguments ;
                for(y = 0; y < parametrosHabilita.length; y++){
                    var obj = document.getElementById('formPessoa:'+parametrosHabilita[y]);
                    obj.removeAttribute('disabled');
                }
            }                  
        </script>
<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>

3 Respostas

S

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…

fabioebner

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:

R

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.

Criado 3 de abril de 2008
Ultima resposta 16 de jul. de 2008
Respostas 3
Participantes 3