Olá desenvolvedores, neste terceiro tutorial sobre eventos, estudaremos sobre eventos de mudança no JSF – JavaServer faces, mais especificamente sobre o ValueChangeListener. Trata-se de um evento que ocorre quando o usuário interage com os componentes de entrada, como h:inputText ou h:selectOneMenu, alterando-os.

Uma função JavaScript pode ser executada quando um evento onchange ocorre. Este evento ocorre quando o valor de um elemento é alterado, isto é, quando o usuário alterar a opção selecionada de um elemento. Assim, este mesmo tipo de validação pode ser realizado no lado do servidor com o ValueChangeListener.

IMPLEMENTANDO O VALUECHANGELISTENER

Desse modo, implementaremos na primeirapagina.xhtml o ValueChangeListener no campo de texto referente ao nome, o componente h:inputText, fazendo com que o método mudancaDeValor() seja invocado do ManagedBean.

<h:inpuTextValueChangeListener=“pessoaBean.mudancaDeValor”);

Assim, no PessoaBean implemente o método mudancaDeValor(), passando como parâmetro a classe ValueChangeEvent do pacote javax.faces.event. Esta classe é uma notificação de que o valor local do componente de origem foi alterado como resultado da atividade na interface do usuário. O evento não é disparado a menos que a validação do novo valor tenha sido concluída com sucesso. Isto é, tão somente após a submissão do formulário.

Em outras palavras significa que ele obterá todas as informações da mudança de valor. Para testar, podemos por meio da instrução System.out.println imprimir no console o valor inicial e o novo valor respectivamente.

System.out.println(“Valor Inicial:” + evento.getOldValue());
System.out.printl("Novo valor:" +evento.getNewValue());

Para que possa visualizar o evento sendo chamado, inicie o servidor e quando logar em seu projeto, edite um registro já cadastrado. Atente-se para não confundir o comportamento do ValueChangeEvent com o evento onblur que ocorre quando o elemento que está sendo “monitorado” perde o foco.

É importante ressaltar que para cada componente devemos criar um método específico, assim se você quiser implementar ValueChangeEvent no campo referente ao sobrenome, por exemplo, deverá criar um novo método e assim, proceder com todos os campos onde deseja implementá-lo. E ainda, havendo restrições no campo “monitorado”, o método não será invocado se os requisitos impostos não forem atendidos.

EM POUCAS PALAVRAS

Neste tutorial aprendemos um pouco sobre o ValueChangeEvent, um evento que ocorre quando há alteração em um componente de entrada por exemplo. Normalmente utiliza-se quando existe a necessidade de gravar o valor antigo e o novo valor de uma entrada qualquer.