Quando dentro de um método, faço result.redirectTo(this).metodo() ele vai para este método mas os atributos do “this” (injetados no construtor) vão nulos.
Alguma ideia?
Quando dentro de um método, faço result.redirectTo(this).metodo() ele vai para este método mas os atributos do “this” (injetados no construtor) vão nulos.
Alguma ideia?
Pode nos mandar o seu controller e a stack trace gerada?
Assim a gente consegue ter uma ideia melhor do que pode estar acontecendo.
Assim…
@Resource
public class ExemploController {
private Result result;
public ExemploController(Result result) {
this.result = result;
}
public void metodo1() {
result.redirectTo(this).metodo2();
}
public void metodo2() {
// aqui o result vai estar nulo
result.qqCoisa(); // NULL POINTER
}
}
Isso eu entendi, mas, aparentemente, está correto. Talvez no seu projeto real tenha alguma coisa diferente. Você verificou se o null pointer está dando dentro de algum método? (ou seja, algum método pode estar dando NPE)
O método que você está fazendo o redirect recebe algum parâmetro? E se esse parâmetro não estiver indo nulo?
Se não tiver problemas, poste o trecho real e a stack trace completa, ajuda bastante…
Você tem o Objenesis no classpath?
garcia-jj
Eu estou utilizando o Maven… Tenho dependencia para o vraptor 3.4.1 que puxa o JAR objenesis 1.1.
Rafael Guerreiro
O método que estou redirecionando não recebe nenhum parametro.
No stack só aparece a sequencia das chamadas mesmo… ou seja, não estoura em nenhum lugar, é porque os atributos da classe estão nulos mesmo.
Debugando, reparei que a instancia this no primeiro método é ExemploController (id=132) e no segundo método ela é ExemploController$$EnhancerByCGLIB$$e15a44a7 (id=139)
Desde já agradeço pela ajuda!
muito estranho dar essa nullpointer… não tem nenhum ponto do controller que muda a instancia do Result?
experimenta colocar o atributo Result result como final, e verifica se no construtor vc está atribuindo o result corretamente.
Vou testar…
Obs: não é só com o Result… é com todos os atributos da classe.
Não deu certo.
Essa instancia do controller sendo ExemploController$$EnhancerByCGLIB$$f9808792 (id=144) é isso mesmo?
é meio estranho ele estar deixando o controller como proxy… vc está usando algum modulo do spring tipo o SpringTransactional ou o Spring security?
troque o redirecionamento pra:
result.redirectTo(ExemploController.class).metodo2();
Vc está com a última versão do VRaptor, certo?
SpringTransactional sim. Pode influenciar? Vou testar.
Versao: 3.4.1
Puts cara,
Foi malz, bizonhice minha!
O metodo2 estava como private!
Acertei pra public e ficou show!
Vlw pela ajuda e desculpa ae :oops: