WW: Redir em tempo de execução

Tenho uma action no WW que pode ter como resultado o redirecionamento para páginas diferentes, por exemplo:

/MyAction.action?id=10

if (id == 1) vai para hello1.jsp
if (id == 2) vai para hello2.jsp

if (id == 10) vai para hello10.jsp

Como eu faço isso ??? Devo criar vários resultados diferentes (SUCCESS1, SUCCESS2, etc.) ou há outro jeito de configurar redirecionamentos dinâmicos ?

Tem alguma coisa errada nessa lógica … as actions não devem atuar como controllers, que neste caso está parecendo.

De qualquer modo vc pode configurar o result SUCCESS para decide.jsp?id=${idComGetNaAction} e no decide.jsp fazer um redirect ou mesmo um include … whatever.

O exemplo é simples, por isso parece um controller, mas a idéia não é essa. Uma action pode só saber em tempo de execução para onde ela vai redirecionar.

Usar decide.jsp funciona, mas isso não seria contra as regras de boa conduta, colocar código e lógica num JSP ???

Exemplo de um interceptor que enfrente esse problema. No meu processo de autenticação, eu quero fazer o redirecionamento automático para a primeira página que o usuário tentou acessar sem estar logado. Então se eu acesso:

http://www.myapp.com/ViewProfile?id=10

e não estou logado eu sou redirecionado para a página de login, e a url acima é adicionada a sessão.

Daí depois que eu logo, ao invés de cair na primeira página do site, eu sou automaticamente redirecionado para o link acima, entendeu?

O meu interceptor que faz isso não tem como saber de antimão qual é a página que ele vai ter que redirecionar, isto é, o redirecionamento é dinâmico.

Como resolvo isso no WW ???

Dois problemas então:

  1. Tenho uma lista pré-definida de URLs que eu posso redirecionar, e quero escolher o redir dinamicamente dessa lista. (Minha primeira pergunta)

  2. Não tenho nenhuma informação sobre o destino do redir. (Problema do redir da autenticação.)

Parece que o único jeito é criar um jsp redir.jsp e passar a url como parametro pra ele.

Talvez o WW devesse suportar redirecionamento dinâmicos, apesar de eu concordar que não é sempre que a gente precisa disso.

Eu crio results diferentes. Pra isso que eles servem.

Perfeito, mas quando toda a URL for dinâmica não há jeito com result diferente, concorda? Teria que usar o redir.jsp.

Sergio,

Depois que falei contigo e fui encher a barrida de comiga e tive algumas idéias sobre o problema.

Uma saida seria criar um novo Result que buscaria de forma dinamica a URL a ser retornada.

Outra saida seria criar um PreResultListener, e nele alterar o ResultConfig alterando a URL de retorno.

Se essa necessidade for grande pensaria algo assim, senao usaria com uma pagina redirecionando mesmo.

]['s

Nesse caso você segue a sugestão do smota.

LIPE,

Desculpa nao entendi. Em qual caso e qual sugestao?

]['s

<result name="success" type=dispatcher">page${number}.jsp</result>
onde “number” é uma variável com get/set na action.