H:messages e h:message

7 respostas
aline_marques

Ola a todos!

Estou usando na minha pagina em jsf o h:message para mostrar as mensagens de erro para cada campo, sendo que para eu mostrar a mensagem de sucesso de cadastro do botão eu so consigo com o h:messages, o porém é que como todos os campos tem required=true ta aparecendo,logicamente,todas as mensagens de erro do h:messages e mais a do h:message!!
Como é que faço pra aparecer a mensagem de sucesso do botão??

<td colspan="2" style="color:green;" align="center">                       
                    <span jsfc="h:messages" showSummary="true" showDetail="true" style="color:green; font-size: 10px"/>                    
                </td>

<tr>                   
                    <td align="center">Nome:</td>                                  
                    <td><input jsfc="h:inputText" id="Nome" value="#{FuncionarioManager.funcionario.nome}" required="true" maxlength="80" /></td>                    
                    <td><span jsfc="h:message" for="Nome" style="color:red; font-size: 10px"/></td>
                </tr>
<td align="right" colspan="2">
                        <br/>
                        <input type="submit" id="BotaoCad" value="Salvar" name="pButton" jsfc="h:commandButton" action="#{FuncionarioManager.salvarFuncionario}"/>
                    </td>

É pra aparecer essa mensagem de sucesso!

msg.addSuccessMessage("Funcionario cadastrado com sucesso");

7 Respostas

Leozin

no teu backing bean:

String sumario = "Sucesso "; String detalhe = "Operação realizada com sucesso"; FacesMessage mensagem = new FacesMessage( sumario, detalhe ); String pagina = null; // você pode especificar a página se quiser FacesContext.getCurrentInstance().addMessage( pagina, mensagem );

aline_marques

ham?Se eu colocar isso la no bean, ai nessa String pagina eu posso colocar o nome da minha página que eu quero que apareça a mensagem?E como é que vai ser a lógica pra que qdo eu clicar no botão aparecer essa mensagem?

Pq pra poder aparecer essa mensagem eu to chamando na pagina o h:messages e agora o que eu iria colocar??

Leozin

você vai botar isso dentro do action

digamos que no teu action tenha um função salvar

public String salvarFuncionario() {
  try {
    funcionarioDAO.salvar( funcionario );
    adicionarMensagem( "Funcionario salvo com sucesso", null, null );
    return "success";
  }
  catch( Exception e ) {
    adicionarMensagem( "Erro ao salvar funcionario: " + e.getMessage(), null, null );
    return "";
  }
}

public void adicionarMensagem( String sumario, String detalhe, String pagina ) {
   FacesMessage mensagem = new FacesMessage( sumario, detalhe );  
   FacesContext.getCurrentInstance().addMessage( pagina, mensagem );  
}
aline_marques

Ahhh querido mas isso eu já tenho no meu action, o que eu não to acertando é chamar diretio a mensagem, pq como eu disse la em cima qdo eu coloco o h:message em cada campo e o h:messages(pra aparecer a bendita mensagem de sucesso), ai qdo eu cadastro certo aparece a mensagem bonitinha, o problema é qdo cadastro errado ai aparece todas as mensagens de erro do h:messages e do h:message, se eu fizer isso que vc mandou eu vou continuar com o mesmo problema entendeu??

… E agora?

Leozin

bote a propriedade globalOnly no teu h:messages

<h:messages globalOnly="true" />
aline_marques

Ah funcionou direitinho agora só aparece as mensagens de erro do h:message mesmo, mas agora quando cadastro não tá mais aparecendo a mensagem de sucesso, eu cadastro e não tá vindo mais nada =(

É sempre assim quando ajeita de um lado bagunça de outro aff…

Leozin

tenta botar a página como “null” na hora de botar a mensagem

FacesContext.getCurrentInstance().addMessage( null, mensagem );
Criado 28 de dezembro de 2007
Ultima resposta 2 de jan. de 2008
Respostas 7
Participantes 2