[VRaptor]: Interceptor + result.include

4 respostas
passos
Preciso injetar uma mensagem logo apos a execução de um metodo de alguns controllers, porem ao fazer
@RequestScoped
@Intercepts(after=ExecuteMethodInterceptor.class, before=ForwardToDefaultViewInterceptor.class)
public class VraptorViewMessageInterceptor implements Interceptor {
	
	private Result result;
	
	public VraptorViewMessageInterceptor(Result result) {
		this.result = result;
	}

	public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException {
		stack.next(method, resourceInstance);
		Controller controller = (Controller) resourceInstance;
		result.include("xpto", controller.getMessages());
	}

	public boolean accepts(ResourceMethod method) {
		return true;
	}

}
A mensagem simplismente não chega. Tentei so de curiosidade fazer:
result.include("teste", "Dentro do LoginController");
result.redirectTo(this).algumMetodo();
Em um controller qualquer e ai as duas mensagens passam a aparecer.

4 Respostas

Lucas_Cavalcanti

coloca o result.include antes do stack.next…

depois a resposta já foi commitada, daí não dá pra incluir mais nada…

passos

O problema e que o que eu preciso injetar depende da execução do metodo no controller. Ou seja, so pode ser depois. Alguma sugestão?

Lucas_Cavalcanti

se o interceptor é after ExecuteMethodInterceptor, ele já começa depois da execução do controller

passos

Faz sentido, realmente usando a anotação de ExecuteMethodInterceptor todas as informações que eu preciso já estão lá no inicio da execução do intercept.

Valeu! :thumbup:

Criado 26 de julho de 2011
Ultima resposta 26 de jul. de 2011
Respostas 4
Participantes 2