Problema com Ajax, JSF2 e selectOneMenu

3 respostas
leanblanh

Fala Galera,

Estou tendo um problema parecido em um sistema que estou fazendo, estou aprendendo JSF 2 agora... tentei as soluções apresentadas Aqui mais sempre na hora de enviar o formulário aparece a mensagem:

id=input-cidade Erro de Validação: O valor não é válido

Estou pegando as informações de um XML que me retorna as cidades de acordo com o estado passado. Depois da chamada AJAX a lista é montada mas na hora de enviar o form ele dá o erro de validação

segue o código

Meu Form:

<h:outputLabel value="Estado: " for="input-estado" />
		<h:selectOneMenu id="input-estado" required="true" value="#{consultoraComumMB.estado}" >
			<f:selectItem itemLabel="Escolha um Estado" itemValue="--" />
			<f:selectItem itemLabel="Rio de Janeiro" itemValue="RJ" />
			<f:selectItem itemLabel="São Paulo" itemValue="SP" />
			<f:selectItem itemLabel="Espírito Santo" itemValue="ES" />
			<f:selectItem itemLabel="Minas Gerais" itemValue="MG" />
			<f:selectItem itemLabel="Parana" itemValue="PR" />
			<f:selectItem itemLabel="Santa Catarina" itemValue="SC" />
			<f:selectItem itemLabel="Rio Grande do Sul" itemValue="RS" />
			<f:ajax event="change" render="input-cidade" listener="#{consultoraComumMB.atualizarCidades}" execute="@this" />
		</h:selectOneMenu>
		
		<h:outputLabel value="Cidade: " for="input-cidade" />
        <h:selectOneMenu id="input-cidade" value="#{consultoraComumMB.endereco.cidade}" immediate="true">
	        <f:selectItems value="#{consultoraComumMB.cidades}" var="cidade" itemValue="#{cidade.uf}" itemLabel="#{cidade.id}" />
        </h:selectOneMenu>

MEU BEAN

public class ConsultoraComumMB {
	
	private Endereco endereco=new Endereco();
	private List<Cidade> cidades;
	private String estado;

public void atualizarCidades(){    
		  List<Cidade> list = obterCidades(getEstado());  
		  setCidades(list); 
	}
	
	private List<Cidade> obterCidades(String estado){
		CidadesAJAX cd=new CidadesAJAX();
				
		//Informa o estado e monta a lista de municipios
		List<Cidade> elements=cd.getCidades(getEstado());
		
		return elements; 
	}		

//getters e setters
}

minha classe cidade

public class Cidade {
	private String id;
	private String uf;
	public String getId() {
		return id;
	}
	public String getUf() {
		return uf;
	}
	public void setId(String id) {
		this.id = id;
	}
	public void setUf(String uf) {
		this.uf = uf;
	}
	@Override
	public int hashCode() {
		// TODO Auto-generated method stub
		return super.hashCode();
	}
	@Override
	public boolean equals(Object obj) {
		// TODO Auto-generated method stub
		return super.equals(obj);
	}
	
	
	
}

3 Respostas

P

Troque o símbolo ‘-’ pra ‘_’ no id.

leanblanh

troquei o id e não funcionou!

leanblanh

Li neste blog http://www.rponte.com.br/2008/02/01/selectonemenu-converter-erro-de-validacao/ sobre este meu erro… fiz o converter mas o erro continua acredito que o problema seja pq preciso alterar o estado do componente também no servidor. mas como eu faço esse reRender do componente? não estou conseguindo e não estou achando nada pra me ajudar…

Criado 23 de julho de 2011
Ultima resposta 25 de jul. de 2011
Respostas 3
Participantes 2