Dae pessoal.
Estou tentando aprender Struts2 e me deparei com um problema ao tentar lidar com interceptors.
Primeiramente, eu tenho a minha Action:
@ParentPackage("default")
public class AdicionaTarefaAction extends ActionSupport {
private Tarefa tarefa;
@Action(value = "adicionaTarefa", results = {
@Result(name = "ok", location = "/tarefa-adicionada.jsp"),
@Result(name = "input", location = "/formulario-tarefas.jsp") },
interceptorRefs= {@InterceptorRef("autorizador")})
public String execute() {
if(tarefa==null)
System.out.println("oi");
new TarefaDAO().adiciona(tarefa);
return "ok";
}
public Tarefa getTarefa() {
return tarefa;
}
public void setTarefa(Tarefa tarefa) {
this.tarefa = tarefa;
}
}
E eu também tenho o meu arquivo adiciona-tarefa.jsp, que contém a seguinte chamada para a action acima:
<form action="adicionaTarefa" method="post">
Descricao:<br/>
<textarea name="tarefa.descricao" rows="5" cols="100"></textarea><br/>
<input type="submit" value="Adicionar">
</form>
O que acontece?
Ao carregar a pagina adiciona-tarefa.jsp , preencher o form e clicar no botão de submit, percebo que a string "oi" é mostrada no console do eclipse e recebo um httpError500 no browser com a NullPointerException, devido a minha tentativa de adicionar um objeto null.
Ou seja, o form não está conseguindo carregar os dados para o objeto 'Tarefa tarefa' dentro da minha Action.
Agora vem o interessante:
Retirando a seguinte linha 'interceptorRefs= {@InterceptorRef("autorizador")}' do código, tudo volta a funcionar normalmente; i.e, o objeto 'Tarefa tarefa' é populado corretamente e o fluxo de paginas que programei segue de forma correta.
Eu sei que o interceptor chamado "autorizador" está funcionando bem, pois ele demostrou o resultado correto para as outras Action's que tenho no projeto.
Além disso, sei que o web.xml e o struts.xml estão configurados corretamente (pelo mesmo motivo explicado acima)
Alguém sabe me dizer qual o problema??