Problemas com Ajax e SelectOneMenu.[RESOLVIDO]

3 respostas
bruno.neves

Galera, estou com um problema com esse selectOneMenu.
Presciso fazer com que quando eu selecionar um item no combo, o método do valueChangeListener seja executado, isso ele faz, mas o problema é que presciso que ele set no value="#{mbRegra.regra.servidor.id}" o itemValue="#{servidor.id}" do combo antes de chamar o valueChangeListener, pois pesquisando pela net descobri que a primeira coisa a ser feita nesse codigo é a chamada do metodo valueChangeListener.

<h:outputLabel for="somnServidor"
                                                   value="Servidores : "/>
                                    <h:selectOneMenu id="somnServidor"
                                                     value="#{mbRegra.regra.servidor.id}"
                                                     valueChangeListener="#{mbRegra.carregarServicosPorServidorListener}">
                                        <f:selectItems value="#{mbRegra.servidores}"
                                                       var="servidor"
                                                       itemLabel="#{servidor.descricao}"
                                                       itemValue="#{servidor.id}"/>
                                        <f:ajax event="change"/>
                                    </h:selectOneMenu>

Alguém poderia me ajudar com isso.
Desde já agradeço.

3 Respostas

L

Tente utilizar <f:setPropertActionListener … />

bruno.neves

valew lgweb mas eu já tentei e mesmo assim ele não setou o valor antes de chamar o metodo.

bruno.neves

Galera resolvi o problema, no SelectOneMenu eu adicionei o immediate=“true”, mas o que realmente me salvou foi la no Mb

<h:outputLabel for="somnServidor"
                                                   value="Servidores : "/>
                                    <h:selectOneMenu id="somnServidor"
                                                     value="#{mbRegra.regra.servidor.id}"
                                                     valueChangeListener="#{mbRegra.carregarServicosPorServidorListener}"
                                                     immediate="true">
                                        <f:selectItems value="#{mbRegra.servidores}"
                                                       var="servidor"
                                                       itemLabel="#{servidor.descricao}"
                                                       itemValue="#{servidor.id}"/>
                                        <f:ajax event="change"/>
                                    </h:selectOneMenu>

Esse método valueChangeListener ele passa como parametro um ValueChangeEvent, pra vc pegar lá no MB, eu estava usando um atributo do MB, mas na verdade eu precisava pegar esse (ValueChangeEvent e), e utilizar o valor que ele me passa. Exemplo:

public void metodoValueChangeListener(ValueChangeEvent e) {
      e.getNewValue();
}

No meu caso ele me deu o valor do itemValue do meu SelectOneMenu.

Espero ajudar alguém com isso.

Criado 29 de junho de 2010
Ultima resposta 30 de jun. de 2010
Respostas 3
Participantes 2