[Resolvido][VRaptor] - Um redirect que volta para o último ResourceMethod executado  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 479
Localização: São Paulo/SP
Offline

Fala pessoal!

No VRaptor já tem algum redirect que volta para a última tela chamada?

Se não, como eu poderia implementar isso...

Eu tentei algo assim:

Um interceptor pega e guarda em uma classe @SessionScoped o método que está indo e um método que redireciona para este método pegado pelo interceptor.

Mas ficou bem confuso, ainda mais se o método anterior recebe parametros...

-Edit-

Eu consegui só com métodos que não recebem parâmetros e também tentei fazer isso usando o validator... Sem sucesso em nenhuma situação...
 Nome do arquivo LastAnnotationRedirect.jar [Disk] Download
 Descrição Plugin do VRaptor para redirecionamento para telas anteriores
 Tamanho 12 Kbytes
 Baixado:  10 vez(es)

This message was edited 3 times. Last update was at 08/06/2011 18:41:10






Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

existe o:


mas não é 100% garantido que o referer existe.

ele vai redirecionar para a página que originou a requisição. É isso que vc quer?

--
Caelum
www.caelum.com.br

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 479
Localização: São Paulo/SP
Offline

Então... Mais ou menos isso... Queria poder informar quais métodos poderiam ser "retornáveis" e quando eu quisesse retornar, ele fosse para o último método retornável... Eu consegui algo parecido... Usei annotations para informar... Também estou usando o Mirror... Mas não consigo informar os parâmetros...





Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

use o interceptor então

para pegar os args, receba MethodInfo no construtor e guarde o info.getParameters()

detalhe: seu interceptor precisa ser @Intercepts(after=ParametersInstantiatorInterceptor.class)


--
Caelum
www.caelum.com.br

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 479
Localização: São Paulo/SP
Offline

Então, daí eu estou tendo o seguinte erro:

java.lang.IllegalArgumentException: Cannot invoke a method by name if one of it's arguments is null. First reflect the method.

De fato o parametro é nulo... E deveria, neste caso... Como eu faço a parte em negrito?





Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

como vc tá pegando o Method pra invocar?

vc pode usar o resourceMethod.getMethod()

--
Caelum
www.caelum.com.br

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 479
Localização: São Paulo/SP
Offline

Estou fazendo assim... Onde recursos é a minha classe q guarda as informações do métodos.






Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

troque para:


vc colocou o after no @Intercepts como eu te falei?

--
Caelum
www.caelum.com.br

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 479
Localização: São Paulo/SP
Offline

Coloquei sim... Na verdade coloquei em outro interceptor que é executado antes desse...

Funcionou sem o getName()...

Mas qual o motivo?





Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

qdo vc usa o getName o mirror tenta procurar qual é o método que se adequa aos parâmetros que vc passou... se o parâmetro é null ele não tem como saber, então dá a exception.

como vc já tem o Method que vc quer invocar, é só passá-lo diretamente, daí poupa o mirror do trabalho de procurá-lo

--
Caelum
www.caelum.com.br

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 479
Localização: São Paulo/SP
Offline

Entendi...

Que tal se implementasse isso no VRaptor? Alguma forma de result.redirectToLastAnnotated();





Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

se definir direitinho como isso funcionaria, não vejo pq não

pode entrar como um plugin por enquanto, que acha?

--
Caelum
www.caelum.com.br

Rafael Guerreiro
JavaEvangelist

Membro desde: 26/10/2010 07:28:13
Mensagens: 479
Localização: São Paulo/SP
Offline

Sim sim... Então como disponibilizo isso como plugin?





Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

-crie um projeto no github com o código
-Forkeie https://github.com/caelum/vraptor-contrib
-git add submodule vraptor-nome-do-plugin <url do git dele>
-commite a adição do submodulo e mande um pull request

a gente vai fazer um jeito automático de disponibilizar todos esses plugins, daí a gente comunica todo mundo =)

[]'s

--
Caelum
www.caelum.com.br

garcia-jj
JWizard

Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline

Porque fazer uma volta tão grande se o VRaptor possui um exception handler que não apenas faz redirect, mas que popula todos os objetos de volta no request e adiciona a exception no response conforme o padrão servlets?

http://vraptor.caelum.com.br/documentacao/exception-handling/

http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum.
 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team