![]() |
|
||||
![]() Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Você está aqui:
JSF - Java Server Faces :::
JSF HTML Tags ::: |
Como responder ao evento valueChangeListener de um controle <h:selectOneMenu> para detectar mudança de seleçãoQuantidade de visualizações: 9371 vezes |
O evento valueChangeListener de um controle <h:selectOneMenu> é disparado quando o usuário muda o valor selecionado no controle. Quando isso acontece, o evento é disparado e pode ser interceptado a partir de um bean gerenciado JSF. O método que deverá tratar o evento no bean têm acesso a um objeto da classe ValueChangeEvent, o que nos permite obter o UIComponent que gerou o evento assim como os valores exibidos antes e depois da seleção. Vamos ver um exemplo? Observe o código para uma página JSP ou Facelets que contém um controle <h:selectOneMenu> e um botão <h:commandButton>: Código para index.xhtml: <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <h:head> <title>Estudos JSF</title> </h:head> <h:body> <h4>Cadastro de Filmes</h4> <h:form> Categoria:<br /> <h:selectOneMenu id="categoria" value="#{filme.genero}" valueChangeListener="#{filme.tratarMudancaGenero}" onchange="submit()"> ...... Começamos atribuindo o valor "#{filme.genero}" ao atributo value do controle <h:selectOneMenu>. No bean Filme a variável genero é do tipo String. Em seguida nós informamos que, no evento valueChangeListener do controle <h:selectOneMenu>, o método tratarMudancaGenero() do bean Filme deverá ser chamado. Veja agora o código para este bean: Código para Filme.java: package entidades; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.event.ValueChangeEvent; @ManagedBean @SessionScoped public class Filme { private String genero; private String msg = "Resultado"; public Filme() { } // método que detecta e trata a mudança de seleção no // controle <h:selectOneMenu> public void tratarMudancaGenero(ValueChangeEvent event){ setMsg("O gênero foi alterado de " + event.getOldValue() + " para " + event.getNewValue()); } ...... Note que no método tratarMudancaGenero() do bean Filme nós exibimos o valor antigo e o novo valor do controle <h:selectOneMenu>. É importante observar que o evento valueChangeListener, por si só, não funciona se o formulário não for enviado após a seleção. Por isso, incluímos uma chamada à submit() no evento onchange. Veja: onchange="submit()" Por fim, note que o envio do formulário feito pela mudança de seleção <h:selectOneMenu> é completamente diferente daquele feito pelo botão <h:commandButton>. Para que você veja a diferença, incluí também uma chamada ao método gravar() do bean feita quando o formulário é enviado clicando-se no botão. |
![]() |
Veja mais Dicas e truques de JSF - Java Server Faces |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |