Problema com função linkTo #464

Closed
dtelaroli opened this Issue Sep 27, 2012 · 5 comments

Projects

None yet

2 participants

@dtelaroli
Contributor

Estou tendo um problema com a função linkTo nos jsp.

Depois de muito testar, percebi que o problema ocorre somente no Java 7, no Java 6 funciona perfeitamente. Descobri a causa do problema pois usava java 6 na minha máquina e em uma máquina com java 7 não fucionou, ao atualizar minha máquina parou também de funcionar.

O problema ocorre quando se usa sobrecarga do método em questão, pois atualmente estou usando um GenericController sem anotação de @Resource que é extendido pelos controllers da app que possuem a anotação.
No GenericController existe um método save que quando eu extendo o mesmo e sobrecarrego o método save ocorre este problema com a função linkTo, tudo funciona adequadamente, até inserir a função no jsp, que gera um erro de compilação do jsp abortando a renderização da página e lançando a exception.

Os métodos de @Post que são sobrecarregados no controller especializado não funcionam reportando a seguinte mensagem:
br.com.caelum.vraptor.http.route.RouteNotFoundException: The selected route is invalid for redirection: nome_controller.nome_action

A rota está sendo mapeada corretamente pela lib mas o linkTo não reconhece a mesma.

Metodos @Get não ocorrem o mesmo problema.

@lucascs
Member
lucascs commented Sep 27, 2012

o seu método save provavelmente é um save(T objeto) com o GenericController, certo?

qdo vc faz isso o java cria métodos chamados de bridge pra redirecionar pro método certo que vc sobrescreveu.

essa estratégia deve ter mudado no java 7, por isso que não funciona.

Quer tentar corrigir esse bug?

provavelmente o erro está aqui:
https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/view/LinkToHandler.java#L81

@dtelaroli
Contributor

eu to muito atarefado, mas vou tentar olhar nos próximos dias, se não conseguir te aviso.

@lucascs
Member
lucascs commented Sep 28, 2012

Sem problemas, muito obrigado pelo bug report =)

@dtelaroli
Contributor

usando sobrecarga de método em controlador genérico

//base controller
@Post
save(T object) {

}

//controller especializado
@Post
save(MeuController object) {
super.save(object)
}

//chamada no jsp

o problema só ocorre com java 7

ou eu passo o endereço relativo como string no jsp ou modifico a url no
especializado @Post("/saveQualquerCoisa") //assim as vezes funciona

no debug mostra que encontrou a rota save corretamente, mas no jsp dá uma
exception e não compila

Abraço,
Denilson Telaroli.

2012/11/5 Nykolas Laurentino de Lima notifications@github.com

@dtelaroli https://github.com/dtelaroli você pode postar um trecho de
código onde ocorre o problema?
Tentei simulá-lo aqui mas não gerou o erro que você disse.


Reply to this email directly or view it on GitHubhttps://github.com/caelum/vraptor/issues/464#issuecomment-10076200.

@lucascs
Member
lucascs commented Nov 5, 2012

correção possível é tentar excluir os bridge methods, ou dar preferencia pra métodos da classe filha...

@lucascs lucascs closed this in cba5a00 Nov 7, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment