Pessoal …
Boa tarde 
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 !