saoj
Junho 7, 2005, 9:54am
#1
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 ?
smota
Junho 7, 2005, 10:13am
#2
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.
saoj
Junho 7, 2005, 10:28am
#3
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:
Tenho uma lista pré-definida de URLs que eu posso redirecionar, e quero escolher o redir dinamicamente dessa lista. (Minha primeira pergunta)
Não tenho nenhuma informação sobre o destino do redir. (Problema do redir da autenticação.)
saoj
Junho 7, 2005, 12:36pm
#4
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.
_fs
Junho 7, 2005, 1:02pm
#5
Eu crio results diferentes. Pra isso que eles servem.
saoj
Junho 7, 2005, 1:26pm
#6
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
_fs
Junho 7, 2005, 3:06pm
#8
Nesse caso você segue a sugestão do smota.
LIPE,
Desculpa nao entendi. Em qual caso e qual sugestao?
]['s
_fs
Junho 7, 2005, 4:32pm
#10
<result name="success" type=dispatcher">page${number}.jsp</result>
onde “number” é uma variável com get/set na action.