Como executar o valueChangeListener a cada mudança de item

No meu caso, o combo exibe uma lista de operadoras de telefone. Ao selecionar eu precisava que fosse executado o valueChangeListener para marcar qual operadora foi selecionada. Segue a dica.

Basta colocar o immediate="true" e incluir a linha <f:ajax event="change"/> 
<h:selectOneMenu id="envioOperadora" value="#{consultaBean.terminal.idContrato.idOperadora}"  
    label="Operadora" converter="operadoraConverter" styleClass="envioOperadora" 
    immediate="true" valueChangeListener="#{consultaBean.setOperadoraContrato}">
    <f:selectItems value="#{terminalBean.listaOperadoras}" 
      var="op" itemLabel="#{op.descricao}" itemValue="#{op}" />
    <f:ajax event="change"/> 
</h:selectOneMenu>

No bean eu marco a operadora selecionada:
public void setOperadoraContrato(ValueChangeEvent event) {
      this.terminal.getIdContrato().setIdOperadora((Operadora) event.getNewValue());
    }


E pronto. Cada vez que for mudado o item no combo ele executará o valueChangeListener e pegará o valor do item selecionado.

Comentários

Postagens mais visitadas deste blog

Popup em JSF sem Javascript

Utilizando um pool de conexões com hibernate

Gravando dados de um arquivo CSV no Oracle utlizando Python e a biblioteca cx_Oracle