[RESOLVIDO] vRaptor - redirectTo - nullPointer

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: