Problemas com mensagens no jsf

Fala galera, meu problema é o seguite, estou tentando mostrar mensagens de erro que eu crio no método de navegação do meu managed bean, que está com escopo de request, quando a minha reqra de navegação está sem o (faces-config), tudo funciona perfeitamente, mas quando eu coloco o redirect as mensagens não são mostradas, e eu preciso do redirect pra pegar a url correta da página requisita porque é baseado nela que eu faço a segurança do sistema (verifico se o usuário tem permissão para acessar a página, através de um servlet filter) . Alguém já passou por isso? Podem me ajudar?

desde de já agradeço a força!!!

não tem ninguem que possa me ajudar?

De que forma você apresenta suas mensagens?

através da tag <h:messages/>

será que ninguém aqui no forum nunca passou por essa situação? se tiver alguem que saiba como resolver, help me, please!!!

pode explicar melhor sobre como funciona essa tua regra?

  • qual página que chama o action?
  • a mensagem é para aparecer em qual página?
  • qual o código que tu fez pra criar a mensagem?

e só por curiosidade: o que você está utilizando de JSF? implementação, frameworks etc?

abraço

valeu pela atenção Leozin, o meu sistema é o seguinte (exemplo):

pagina1.xhtml


  ....
   <h:form>
       <h:commandLink value="Submit" action="#{MeuMBean.meuMetodoDeNavegacao}" />
   </h:form>
  ....

MeuMBean.java


...

public String meuMetodoDeNavegacao(){

   FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Mensagem Global", null);
   FacesContext.getCurrentInstance().addMessage(msg);

   return "success";

}

...

pagina2.xhtml

...
<f:view>
    <h:form>
       <h:messages />
    </h:form>
</f:view>
...

faces-config.xml

...

   <managed-bean>
        <managed-bean-name>MeuMBean</managed-bean-name>
        <managed-bean-class>teste.MeuMBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>

   <navigation-rule>
        <from-view-id>/pagina1.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>success</from-outcome>
            <to-view-id>/pagina2.xhtml</to-view-id>
            <redirect/> <!-- esse é o meu problema -->
        </navigation-case>
   </navigation-rule>
...

esse é um exemplo do meu problema, se vc tentar tentar rodar esse exemplo, com certeza, na pagina2.xhtml não será mostrada nenhuma mensagem. O Problema é o nó na regra de navegação (faces-config.xml), se eu tirar ele, a mensagem aperece bonitinha, porem a url mostrada no navegador é a url da página anterior e no meu sistema eu faço a autorização de usuário através da url, tenho um filtro que recupera a url requisitada e baseado nas permissões do usuário o sistema pode ou não mostrar a página requisitada, só que sem o redirect essa validação não funciona por que a url não confere com a url da página atual.

Obs.: estou usando JSF RI 1.2 e facelets

então faz assim:

quando adicionar o teu faces-message, bota a viewId da página que você quer que apareça a mensagem :slight_smile:

in other words

FacesContext.getCurrentInstance().addMessage("/pagina2.xhtml",msg);

veja se isso funciona

abração

fala Leozin, isso não funciona, acho que vc se confundiu, o primeiro parâmetro do método “addMessage()” recebe o “clientId” e não o “viewId”, mas de qualquer forma obrigado pela tentativa.

ninguem mais sabe como resolver esse problema? eu to precisando muito resolver isso?

se aguem alguem souber, por favor me ajuuuuuuuuuuuuuuudeeeeeeeeeeeeeeeeeeeeeem !!!

E assim, funciona?

&lt;h:messages globalOnly="true" /&gt;