Problema com item "sair" do menu (rich:menuItem)

Percebi um problema que até antes não tinha visto, existe o componente rich:menuItem do qual podemos utilizar dentro de um dropdown menu e então colocar chamadas para várias telas, inclusive para a operação de logout (que é o meu caso).

Defini esse menuItem da seguinte forma:

<rich:menuItem submitMode="ajax" value="Sair" action="#{loginBean.efetuarLogout}" />

Onde ao ser clicado, executa um action que desloga o usuário e sai do sistema, enviando o usuário para a tela de login. Até aí sem problema, desde quando fui fazer um teste no IE, e o menu item não chamava minha ação (executava bem no FireFox e Opera).

percebi que a opção submitMode era uma “responsável” por isso, estando ela setada em ajax, faz com que a ação seja chamada via firefox e opera e ocorre tudo bem, no IE não; mas quando troco para server, executava bem no IE, mas demais browsers não.

Alguém já passou por algo parecido com o menuItem a ser executado corretamente pelo menos no IE e FireFox?

Valeu!

Na verdade, tanto no submitMode para ajax ou server, no IE é executado, porém o método efetuarLogout tem o retorno string para “sair”, esse sair é definido:

    <navigation-rule>
        <from-view-id>*</from-view-id>
        <navigation-case>
            <from-outcome>sair</from-outcome>
            <to-view-id>/login.jspx</to-view-id>
        </navigation-case>
    </navigation-rule>

No IE, o submitMode ajax executa o método, porém não redireciona segundo o navigation-case, quando troco para server, fica tudo ok, porém desconserta no FireFox. Já até tirei o from-view-id e não resultou em nada.

Grivon,

conseguiu encontrar uma solução para este problema?

Abraço!

Consegui resolver!

No mapeamento das páginas no faces-config eu coloquei a tag , assim:

<navigation-case>
	   <from-outcome>login</from-outcome>
	   <to-view-id>/login.jsp</to-view-id>
	   <redirect/>
  </navigation-case>

O chato é que é feito um redirecionamento ao invés de uma chamada ajax, mas pelo menos funciona nos navegadores.

[quote=Luiz_Gustavo]Consegui resolver!

No mapeamento das páginas no faces-config eu coloquei a tag , assim:

<navigation-case>
	   <from-outcome>login</from-outcome>
	   <to-view-id>/login.jsp</to-view-id>
	   <redirect/>
  </navigation-case>

O chato é que é feito um redirecionamento ao invés de uma chamada ajax, mas pelo menos funciona nos navegadores.[/quote]

Oi luiz, tudo certinho?

O problema do redirect é justamente que ele “refresha” todo o request, inclusive se você adicionar uma mensagem no messages do JSF, essa mensagem não é obtida quando executa um redirect.

POxa, isso realmente é um problema. Mas no meu caso, especificamente, não chega a atrapalhar.
Mas você conseguiu resolver o problema do menu de alguma outra forma?

Abraço!

[quote=Luiz_Gustavo]POxa, isso realmente é um problema. Mas no meu caso, especificamente, não chega a atrapalhar.
Mas você conseguiu resolver o problema do menu de alguma outra forma?

Abraço![/quote]

A solução que consigo perceber até o momento é uma verdadeira gambiarra, parecendo um CSS HACK.

Tenho que perceber qual é o browser corrente, se for IE então não executa ajax mode, se for diferente de IE, executa ajax mode.

Parece que o compoennte de menu do richfaces não trabalha com esses dois padrões de browser ao mesmo tempo, bizarro.