valueChangeListener Não Funciona

Pessoal …
Boa tarde :slight_smile:
Tenho um valueChangeListener em um campo <h:inputhidden esse campo tem seu value alterado após um autoComplete.
Mas a ação descrita no valueChangeListener não é chamada.

Caso eu altere o campo de <h:inputHidden para <h:inputText e alterar o valor na mão. aí funciona !

Como que é? O valueChangeListener não escuta valores alterados via java script ?

Valeu (y)

// aqui o código que altera o valor do campo hidden
jQuery('#empresaNome').autocomplete('/autocomplete-servlet/', 
		{extraParams:{tipo:'empresas'}},
		{width: 350},
		{selectFirst: true},
		{minChars: 3},
		{maxCacheLength:1})
		.result(function(event, data, formatted){
		if(data[1]){
			jQuery("#contaId").val(data[1]);										
		}
	});		


// campo 
<h:inputText value="#{formEventoBean.contaId}" id="contaId" valueChangeListener="#{formEventoBean.geraContatos}" ></h:inputText>


//metodo
	public void geraContatos() {
		System.out.println("FormEventoBean.geraContatos()");
		System.out.println(contaId);
		
		
	}

O Javascript está submetendo o valor para o servidor após alterar?

Se não, se lembre que JS apenas roda no cliente e não tem contato algum com o servidor.

Bom dia .
Obrigado por responder.

Mas o valueChangeListener serve para pegar as alterações feitas na página ?
Até onde eu saiba, nao precisa submeter nada pra ele funcionar.

Se você entrar no campo, alterar e sair ele envia alguma coisa?

Acho que o problema estaria mesmo no JS, mas acho apenas.

Outra coisa, seu método não teria que ter na assinatura um parâmetro?

Qual exemplo você se baseou para fazer o seu código?

Na verdade o campo é um <h:hidden
se eu alterar para <h:text entrar no campo, alterar e sair aí ele chama o método.

O correto é que o metodo receba um ValueChangeEvent assim:

public void geraContatos(ValueChangeEvent evento) {	

Mas isso é para receber o valor, não influencia na chamada.

Se a alteração tem que ser manual para que o evento : valueChangeListener seja disparado . Por que a documentação jsf preve esse atreibuto na tag: <h:hidden ?
Quero dizer, a forma mais comum de alterar o valor de um campo hiddem é através de JS mesmo !