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((Operadoraevent.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

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

Utilizando um pool de conexões com hibernate

Popup em JSF sem Javascript