Probelma com passagem de parametros via AJAX - JSF

6 respostas
vinny767

Senhores,

Tenho uma tela simples, com um campo “CEP” e um botão. O que espero é que, ao clicar no botão, o valor do campo “CEP” seja atribuído a um atributo chamado cep do tipo String no ManagedBean. Porém, não estou conseguindo. Estou usando o suporte nativo do JSF 2, com a tag <f:ajax>. Segue o código…

<h:inputText value="#{instituicaoBean.cep}" maxlength="9" size="10"></h:inputText>
<h:commandButton value="Consultar" actionListener="#{instituicaoBean.consultarPorCep}" >
	<f:ajax render="enderecosPorCep"></f:ajax>
</h:commandButton>

No MB, tenho…

public void consultarPorCep() {
	if(this.cep != null){
		this.enderecosPorCep = CEPDomain.consultarPorCEP(Long.parseLong(cep));
	}	
}

… bem simples, mas o atributo ‘cep’ está sempre em branco. Alguma sugestão?

6 Respostas

drsmachado

Dê um id para o elemento h:inputText e, no f:ajax, coloque o id no execute

<h:inputText value="#{instituicaoBean.cep}" maxlength="9" size="10" id="cep"></h:inputText>  
<h:commandButton value="Consultar" actionListener="#{instituicaoBean.consultarPorCep}" >  
    <f:ajax render="enderecosPorCep" execute="cep"></f:ajax>  
</h:commandButton>
vinny767

Eu já havia feito isso. Fiz de novo agora, mas o parametro continua null no MB! :frowning:

drsmachado

Bom, eu to fazendo isso e funciona, a única (e principal) diferença é que o listener eu agrego ao f:ajax e não ao commandButton

<h:inputText value="#{instituicaoBean.cep}" maxlength="9" size="10" id="cep"></h:inputText>    
<h:commandButton value="Consultar" >    
    <f:ajax render="enderecosPorCep" listener="#{instituicaoBean.consultarPorCep}" execute="cep"></f:ajax>    
</h:commandButton>

Claro, este método deve existir.
Eu costumo debuggar para ver se está tudo ok.

vinny767

Copiei exatamente o seu código, e nada.
Eu estou exibindo isso dentro de um popUpPanel do RichFaces. Não sei se tem algo a ver. Tá complicado. O Raio do atributo nao seta de jeito nenhum!

drsmachado

Bem, eu tava tendo estes problemas, consegui resolver desta forma.

drsmachado

Caramba.
Depois de muitos séculos sem mexer diretamente com ajax e JSF 2, eis-me aqui.
E olha, já não lembrava como fazia para passar um parâmetro usando essa coisa.
Graças a mim mesmo, o problema está resolvido.
Obrigado eu.

Criado 16 de junho de 2011
Ultima resposta 31 de ago. de 2012
Respostas 6
Participantes 2