JSF - Executar metodo do ManagedBean ao mudar uma selectOneMenu

5 respostas
andre_a_s

Senhores :slight_smile:
Preciso executar meu ManagedBean quando mudo a opção da selectOneMenu. Preciso dar o submit ao fazer isso.
Consegui colocando um botão e no evento onchange da combo, chama um javascript q dá um click no botão. Mas desse jeito, o meu botão fica aparecendo na tela, nao quero isso.
Como posso fazer? :?:

5 Respostas

xgucax

E aí, tudo blz?
Não precisa disso tudo. Basta você submeter o formulário pelo evento onChange.
Eis um exemplo cujo evento é ainda “escutado”:

<h:selectOneMenu.. onchange="document.NOMEDOFORM.submit();" valueChangeListener="#{algo.listener}" > ... </h:selectOneMenu>

ou ainda utilize DOM, caso não consiga:
document.getElementById(‘id_do_form’).submit();

Definindo um action no botão, creio que o mesmo será invocado após a submissão

Boa sorte

andre_a_s

Entendi… mas como vou falar pra qual metodo do meu Bean ele vai?
Em um botão por exemplo eu coloco:

<h:commandButton value="Cadastrar" action="#{GarantiaBean.cadastroAuxiliar}" />

Nele eu falo q ele vai pro metodo cadastroAuxiliar do bean GarantiaBean. Onde declaro isso no jeito que vc mostrou acima?
Valeu!

xgucax

Seguinte, você pode criar um método Listener (cujo evente é ValueChangeListener) e nesse método, no seu backing bean, você invoca este outro método que vc deseja.
Boa sorte

andre_a_s

Então… fiz do jeito q vc falou, e rolou, PORÉM… ele não fez o forward pra onde eu queria… no meu método q o valueChangeListener chamou, retornou uma String SUCCESS, mas ele nao foi pra onde o SUCCESS está mapeado, ele voltou pra tela q estava… oq pode ser?

xgucax

Eita é verdade , ele não retorna.
Cara, eu não sei. Desconfio que no objeto APPLICATION vc possa definir uma string de saída a ser visualizada pelo front-controller

Uma saída aí seria efetuar um sendRedirect pelo request

Falow

Criado 5 de janeiro de 2007
Ultima resposta 5 de jan. de 2007
Respostas 5
Participantes 2