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: 9466 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. |
|
|
Veja mais Dicas e truques de JSF - Java Server Faces |
Dicas e truques de outras linguagens |
|
Delphi - Como verificar se um arquivo existe usando a função FileExists() da unit SysUtils do Delphi |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







