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