Exibindo mensagem sem <h:messages/>

14 respostas
alandiniz

Olá, eu tenho no meu projeto vários formulários…

<h:form>
<h:messages/>

aki no meio tem vários
<h:inputText required="true" requiredMessage="teste" ...../>

e no final um botão que chama um método no ManagedBean.
<h:commandButton.../>

</h:form>

O problema é que quando eu clico no botão sem valor no inputtext, ele aparece neste caso, a mensagem teste em cima do h:form e no lugar do <h:messages/>

e se eu retiro o <h:messages/> ele aparece a mensagem “teste” uma vez em cima do <h:form>

como eu faço pra tratar isso?

14 Respostas

A

cara,

sua explicação ficou meio confusa, mas acho o que vc quer é isso, coloque globalOnly=“true” no seu h:messages

t+

alandiniz

resumidamente
ele ta exibindo mensagem sem o <h:messages>

eu queria que mostrasse a mensagem só no lugar onde eu coloco o <h:message>… mais quando eu coloco isso, ele fica aparecendo em 2 lugar

A

entao,

é so fazer do jeito que eu te falei, que vai funcionar.

t+

alandiniz

eu coloquei desse jeito ai e continuo exibindo as mensagens la em cima da página…

e se eu tiro esse globalOnly=“true” ele exibe as mensagens nos 2 lugares…

Hebert_Coelho

Em cima do seu form você não tem a tag:
<h:messages/>

Talvez em outra página?

A

cara,
os componentes funcionar assim,

h:messages com globalOnly=“true”, ele so vai exibir as msg que vc setou no seu MB com FacesContext.getCurrentInstance().addMessage
h:message vc vai vincula-lo ao seu componente, por exemplo um inputtext com requered true, ele vai exibir essa mensagem.

da uma verificada no que vc está fazendo.

t+

alandiniz

no meu MB nao tem nenhuma mensagem do tipo FacesContext.getCurrentInstance().addMessage

e no meu xhtml não tem <h:messages> sem ou com o globalonly…

o estranho eh isso… ele ta exibindo mensagem do nada…

pelo q eu vi eh antes do <h:form>…

A

cara,
da um clean no seu projeto, da uma limpada no seu servidor de aplicação.

t+

alandiniz

eu ja fiz isso, várias vezes…

faz tempo na verdade q ta aparecendo…

a unica tag q eu tenho diferente na página eh <ui:include src=“topo.xhtml”/>

axo q num tem nada a ve

  • pelo que eu vi aki, fiz o teste, as mensagens estão vindo entre o

<ui:include src=“topo.xhtml”/>

AKI

<h:form>

e meu topo.xhtml só tem um
<c:if test…>

Hebert_Coelho

Tem como postar a página toda?

alandiniz

Primeiro o topo.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" ></meta>
        <title><h:outputText value="#{configuracoesBean.configuracoes.nomeLaboratorio}"/></title>
        <c:if test="#{configuracoesBean.usuario.nivel == null}">
            <meta http-equiv="refresh" content="0; url=index.xhtml"></meta>
        </c:if>
        <script src="js/jquery-1.6.3.min.js"></script>
        <link rel="stylesheet" type="text/css" href="css/estilos.css"></link>
        <script>
            $(function(){
                $("ul.menu li").hover(function(e) {
                    $(this).find("ul.sub").stop().slideDown();
                    $(this).find("a:first").attr("class","on principal");
                },function(){
                    $(this).find("ul.sub").slideUp();
                    $(this).find("a:first").attr("class","principal ");
                });
            });
        </script>
    </head>
    <body>
        <div class="conteudo">
            <div id="topo">
                <a href="gerenciar.xhtml">
                <img src="img/logo.png" width="208" height="34" alt="web.exame" style="margin:20px 0;" />
                </a>
                <div id="saudacao">
                    <h:form>  #{util.saudacao} <b><h:outputText value="#{configuracoesBean.usuario.nome}"/></b> | #{util.mensagem} | <h:commandLink value="Sair" action="#{configuracoesBean.deslogar}"/></h:form>
                </div>
            </div>
        </div>
        <div id="menu">
            <div class="conteudo">
                <ul class="menu">
                    <li class="nivel1"><a class="principal" href="gerenciar.xhtml">Início</a></li>
                    <li class="nivel1">
                        <a class="principal" href="exames.xhtml">Exames</a>
                        <ul class="sub">
                            <li><a href="convenios.xhtml">Convênio</a></li>
                            <li><a href="exametipo.xhtml">Tipo</a></li>
                            <li><a href="examecategoria.xhtml">Categoria</a></li>
                            <li style="border-bottom:none;"><a href="examesubcategoria.xhtml">Sub-Categoria</a></li>
                        </ul>
                    </li>
                    <li class="nivel1"><a class="principal" href="pacientes.xhtml">Pacientes</a></li>
                    <li class="nivel1"><a class="principal" href="medicos.xhtml">Médicos</a></li>
                    <li class="nivel1"><a class="principal" href="relatorios.xhtml">Relatórios</a></li>
                     <c:if test="#{configuracoesBean.usuario.nivel >= 2}">
                        <li class="nivel1"><a class="principal" href="departamentos.xhtml">Departamentos</a></li>
                        <li class="nivel1"><a class="principal" href="usuarios.xhtml">Usuários</a></li>
                        <li class="nivel1">
                            <a class="principal" href="#">Configurações</a>
                            <ul class="sub">
                                <li style="border-bottom:none;"><a href="configuracoes.xhtml">Dados Laboratório</a></li>
                                <li style="border-bottom:none;"><a href="backup.xhtml">Backup</a></li>
                            </ul>
                        </li>
                    </c:if>
                </ul>
            </div>
        </div>
    </body>
</html>
Agora o medico_cadastro.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title><h:outputText value="#{configuracoesBean.configuracoes.nomeLaboratorio}"/></title>
        <script src="js/jquery-1.6.3.min.js"></script>
        <link rel="stylesheet" type="text/css" href="css/estilos.css"></link>
    </head>
    <body>
        <ui:include src="topo.xhtml"/>
//eh bem aqui que aparece a mensagem do nada        
   <h:form>
            <div class="conteudo">
                <h1>Cadastrar Médico</h1>
                <div class="clear"></div>
                <div style="padding:10px;">
                    <div>
                        Nome<span style="color: #F00;">*</span><br />
                        <h:inputText required="true" requiredMessage="Nome Obrigatório" value="#{medicoBean.medico.nome}" style="width:380px;"/>
                    </div>
                    <div>
                        CRM<span style="color: #F00;">*</span><br />
                        <h:inputText required="true" requiredMessage="CRM Obrigatório" value="#{medicoBean.medico.crm}" style="width:380px;"/>
                    </div>
                    <div>
                        Telefone<span style="color: #F00;">*</span><br />
                        <h:inputText required="true" requiredMessage="Telefone Obrigatório" value="#{medicoBean.medico.telefone}" style="width:103px;">
                        </h:inputText>
                    </div>
                    <div>
                        Clinica<span style="color: #F00;">*</span><br />
                        <h:inputText required="true" requiredMessage="Clinica Obrigatória" value="#{medicoBean.medico.clinica}" style="width:103px;"/>
                    </div>
                    <div class="clear" style="padding-top:10px; margin-bottom:10px; border-bottom:1px solid #ccc;"></div>
                    <div>
                        <h:commandButton value="Salvar" action="#{medicoBean.cadastro}"/>
                    </div>
                </div>
            </div>       
        </h:form>
    </body>
</html>

e aqui meu método de cadastrar

//método que cadastra um novo medico
    public String cadastro() {
       String retorno = "";
        try {
            dao.salvarNovo(
            medicos = (List<Medico>) dao.recuperaLista(Medico.class);
            retorno = "medicos";
        } catch (Exception e) {
        retorno = "medico_cadastro";
        }
        return retorno;
    }
Hebert_Coelho

Faz seguinte. Faz uma busca por todo seu projeto procurando a palavra teste! =D

alandiniz

nao nao, akilo ali em cima eu falei só pra exemplo

meu projeto está exatamente como postei ai em cima

sem nenhuma tag <h:message ou messages/>

e ta exibindo a mensagem… ta meio loco issso

e pq eu tenho nos campos o required true e tenho uma requiredMessage…

  • eu não to especificando nenhum lugar pra exibir as mensagens tpow

Nome Obrigatório
CRM Obrigatório… etc…

Hebert_Coelho

No seu web.xml você tem alguma configuração do tipo:

<param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value>

Criado 9 de novembro de 2011
Ultima resposta 9 de nov. de 2011
Respostas 14
Participantes 3