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> </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> </td>
<td width="150">Titulo de Eleitor:</td>
<td width="6"> </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> </td>
<td height="25">
<h:selectOneMenu id="selectZona"
value="#{pessoa.codigoZonaEleitoral}">
<f:selectItems
value="#{montaCombo.zona}" />
</h:selectOneMenu>
<td> </td>
<td><h:inputText id="tituloEleitor" styleClass="borda_cinza" value="#{pessoa.codigoTituloEleitor}"/></td>
<td> </td>
<td><h:selectBooleanCheckbox value="#{pessoa.preCandidato}" onclick="verificaPreCandidato(this)"/><h:outputText value="Sim" /></td>
</tr>
<tr>
<td height="10"> </td>
<td> </td>
<td height="10"> </td>
<td> </td>
<td colspan="3"> </td>
</tr>
<tr>
<td width="91" height="25">Telefone:</td>
<td width="9"> </td>
<td width="123" height="25">Telefone Comercial: </td>
<td width="9"> </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"> </td>
<td height="25"><h:inputText id="telefoneComercial" styleClass="borda_cinza" value="#{pessoa.telefoneComercial}"/></td>
<td height="25"> </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]