Pessoal, preciso de uma ajuda. Tenho um método no .xhtml de um botão que deveria chamar um método no bean.
A coisa é simples assim:
XHTML
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:sec="http://www.springframework.org/security/tags"> <h:form id="frmSave"> <h:commandButton id="testeMensagem" value="Teste mensagens" styleClass="submitform" actionListener="#{meuBean.testeMensagem}" /> (...)
BEAN
(...) public void testeMensagem() { addInfo("Mensagem!"); addWarning("Mensagem!"); addError("Mensagem!"); } (...)
Ele não dá erro, não aparece nada útil no StackTrace, nem dá exceção.
Se no onInit() do bean eu chamar o método acima, ele executa normalmente; mas se chamo ao clicar o botão, não acontece nada.
Já li tópicos tipo esses:
- Página jsf não chama método no bean
- JSF - Pegar os valores do form e passar os valores para o metodo, como?
- https://pt.stackoverflow.com/questions/92201/por-que-meu-bean-não-está-recebendo-o-submit-do-formulário
- [RESOLVIDO] Valor dos campos do form do Dialog não chegam no Bean - PRIMEFACES - JSF
- https://www.ti-enxame.com/pt/jsf/primefaces-commandbutton-nao-funciona/1043455586/
Já experimentei usar “action” e “onclick” no lugar de “actionListener”
Já experimentei usar process="@form" e update=":messages" e também ajax="false"
Já experimentei usar “<p:” ao invés de “<h:”
Já debuguei. Quando eu clico no botão, o debug não vai para o método.
A única forma do botão acionar o método é se eu usar immediate="true"
mas isso não resolve o problema porque eu tenho um outro botão que chama um método para persistir os dados do formulário. E o immediate não processa dados, mesmo se botar o “process”.
Por isso, peço ajuda aos colegas. Alguém já passou por isso antes? Tem alguma ideia do que poderia ser?
Desde já muito obrigado.