Retorno ManageBean JSF

Bom dia/tarde/noit madruga pessoal.

tenho uma duvida creio que bastate simples mas q nao consigo resolver, estou estudando jsf 2.0 com padrao DAO, sem hibernet, to tentado fazer um pequeno exemplo de cadastro no banco de dados apenas para fin didaticos, de principio consegui fazer o cadastro e persistir no banco de dados, porem ao se fazer um persistencia podemos ter dois tipos de mesagens, uma positiva e uma de erro, e é nessa hora que eu estou me embanando, eu coloquei duas tags de mensagens com ids diferentes cada uma para tratrar uma mensagem porem quando a mensagem volta do managem bean sendo erro ou nao a mensagem aparecem nas duas tags, sera que alguem poderia me ensinar por favor a como tratar mensagens em jsg2.0 ? para maiores explicações estou postando o codigo do meu managem e do xhtml abaixo:

xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <title>TODO supply a title</title>
    </h:head>
    <h:body>
        <f:view>

            <h:form id ="frmTeste">

                <h:messages id="msgOK"/>

                <h:panelGrid columns="2">

                        <h:outputText value="Codigo"/>
                        <h:inputText size="40" value="#{LivroBean.objLivro.id}"/>

                        <h:outputText value="Nome:"/>
                        <h:inputText id="txtNome" size="40" value="#{LivroBean.objLivro.autor}" required="true"/>

                        <h:commandButton id="salvar" value="submter" action="#{LivroBean.salvar}"/>
                        
                </h:panelGrid>

                 <h:messages id="msgErro"/>
                   
            </h:form>

        </f:view>
    </h:body>
</html>

o problema e que tanto msgErro, e msgOk retornam o mesmo valor ao mesmo tempo…

ManageBean

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.br.senasistemas.bean;

import com.br.senasistemas.modelo.Livro;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

/**
 *
 *@author Sil@s
 *
 */

@ManagedBean(name = "LivroBean")
@RequestScoped
public class LivroBean
{
    private Livro objLivro = new Livro();

    public Livro getObjLivro() {
        return objLivro;
    }

    public void setObjLivro(Livro objLivro) {
        this.objLivro = objLivro;
    }

    public void salvar()
    {
       String vSalvar = objLivro.salvar();

      if(vSalvar.equalsIgnoreCase("ok"))
      {
            FacesContext.getCurrentInstance().addMessage("frmTeste:msgOK", new FacesMessage("salvo!"));
      }else{
         FacesContext.getCurrentInstance().addMessage("frmTeste:msgErro", new FacesMessage(vSalvar));
      }
    }

}

desde de ja agradeço :wink:

:frowning: :frowning: :frowning: oh my God!
Pessoal alguem poderia ao menos postar um cod exemplo de como voceis fariam ou um link para algum tuto que faça isso, pois so to achando com hibernet e parece que é direferente. :wink:

Kra, o seu código está certo. O q vc ñ percebeu é q o ID q vc passa p/ o método addMessage(FacesMessage) ñ é o do componente h:messages mas sim o do componente q está associado ao h:message (no singular) onde vc vai ecoar a menssagem. O componentes h:messages (no plural) ecoa tds as menssagens, independente de id. Por isso vc, geralmente, terá apenas um na sua view. P/ o seu caso use apenas um h:messages p/ obter o resultado esperado. Ñ é necessário usar h:messages diferentes p/ mostrar diferentes tipos de menssagens, basta usar Objetos FacesMessage diferentes.

Obrigado pela explicação dev.rafael, vou usar um mesagem só com vc explicou eu tava mesmo em duvida entre os dois e quando usalos, vlw mesmo pela explição amigão um abraço e fique com Deus! :slight_smile: :slight_smile: :slight_smile: