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: 9346 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: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?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()"> <f:selectItem itemValue="Terror" itemLabel="Terror" /> <f:selectItem itemValue="Comédia" itemLabel="Comédia" /> <f:selectItem itemValue="Aventura" itemLabel="Aventura" /> </h:selectOneMenu> <h:commandButton id="submit" value="Gravar Dados" action="#{filme.gravar}" /> <h:outputText value="#{filme.msg}" /> </h:form> </h:body> </html> 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: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- 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()); } // método que intercepta o envio do formulário public String gravar(){ // vamos atualizar a variável msg this.setMsg("Formulário enviado com sucesso."); // vamos voltar para a página inicial return "index"; } public String getGenero() { return genero; } public void setGenero(String genero) { this.genero = genero; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } } 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. |
Link para compartilhar na Internet ou com seus amigos: |
Vamos testar seus conhecimentos em |
Vigas a flexão simples: seções retangulares As ações permanentes atuam na estrutura durante toda a sua vida útil, podendo apresentar poucas variações. Em vigas de concreto armado, essas ações normalmente são os carregamentos de paredes, das lajes apoiadas sobre elas e do seu próprio peso. Imagine uma viga de concreto V (15x40) que sustenta uma parede com 18cm de espessura e suporta duas lajes. O pé-direito da edificação é de 3,00m e tanto a viga que sustenta a parede quanto a no topo desta têm altura de 40cm. Considere que as reações de apoio das lajes nessa viga são de 3,55kN/m e 5,40kN/m. Nesse cenário, qual é o carregamento dessa viga? A) 10,45kN/m. B) 11,84kN/m. C) 13,89kN/m. D) 15,39kN/m. E) 16,15kN/m. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
Qual é a forma correta de se invocar uma função JavaScript chamada "calcular"? A) call function calcular(); B) calcular(); C) def call calcular(); D) call calcular(); Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Python |
Qual o resultado da execução do seguinte código Python?valor = 76.1234 print("O valor é: %0.2f" % valor) A) O valor é: 76.00 B) O valor é: 76.12 C) O valor é: 0076 D) O valor é: 0.76 E) O valor é: 76.13 Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Estruturas de Aço e Madeira |
Ações em estruturas: apresentação dos principais carregamentos na análise de estruturas convencionais Qual das alternativas a seguir possui exemplos, na ordem correta de ações: permanentes diretas, permanentes indiretas, acidentais diretas, acidentais indiretas e excepcionais. A) Peso próprio, variações de temperatura, cargas móveis, protensão e terremotos. B) Peso próprio, protensão, vento, variações de temperatura e terremotos. C) Deslocamento de apoio, imperfeições geométricas, vento, variações de temperatura e terremotos. D) Peso próprio, imperfeições geométricas, vento, força longitudinal de frenagem e explosões. E) Peso próprio, imperfeições geométricas, vento, variações de temperatura e cargas verticais de uso da construção. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em AutoCAD Civil 3D |
Topografia no Civil 3D São linhas usadas para representar a topografia, mostrando as mudanças de elevação no terreno. Essas linhas conectam posições com a mesma elevação em uma superfície. Estamos falando de: A) Control Points (Pontos de Controle) B) Breaklines (Linhas de Quebra) C) Contour Lines (Curvas de Nível) D) Feature Lines (Linhas de Características) E) Parcels (Parcelas, Lotes) Verificar Resposta Estudar Cards Todas as Questões |
Veja mais Dicas e truques de JSF - Java Server Faces |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento 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 |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |