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