Interceptors com Annotation no Struts2 - Action perde acesso ao bean do JSP [RESOLVIDO]

1 resposta
Rangel_Zutin

Pessoal,

estou com um problema ao usar Interceptors do Struts2. Quando associo minha Action ao Interceptor atraves da annotation interceptorRefs = {@InterceptorRef("authorizer")} minha Action nao consegue mais ter acesso ao Javabean do JSP. Seguem os codigos:

Action:

@ParentPackage("default")
package uk.co.rangel.tasks.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;

import uk.co.rangel.dao.TaskDAO;
import uk.co.rangel.tasks.model.Task;

@ParentPackage("default")
public class AddTaskAction {
	
	private Task task;
		
	@Action(value="addTask", 
			results={@Result(name="OK", type="redirectAction", params={"ActionName", "listTasks"})},
			interceptorRefs = {@InterceptorRef("authorizer")})
	public String execute(){
		new TaskDAO().addTask(this.task);
		return "OK";
	}

	public Task getTask() {
		return task;
	}

	public void setTask(Task task) {
		this.task = task;
	}
}
}

Interceptor:

public class AuthorizerInterceptor implements Interceptor {

	private static final long serialVersionUID = -8924888461901666436L;

	@Override
	public void destroy() {
	}

	@Override
	public void init() {
	}

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		Login login = (Login) invocation.getInvocationContext().getSession().get("loginSession");
		if(login == null){
			return "FAIL";
		} else {
			return invocation.invoke();
		}
	}

}

struts.xml:

<struts>
	<include file="struts-default.xml"/> 
	<package name="default" extends="struts-default">
		<interceptors>
			<interceptor name="authorizer" class="uk.co.rangel.tasks.interceptor.AuthorizerInterceptor"/>
		</interceptors>
		
		<global-results>
			<result name="FAIL">/jsp/login.jsp</result>	
		</global-results>
	</package>
</struts>

Form JSP:

<form action="addTask" method="post">
<table width="800">
<tr>
<td>Description:</td>
<td><textarea name="task.description" rows="5" cols="100"></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="SAVE"/></td>
</tr>
</table>
</form>

Agredeco desde ja a ajuda de todos!

1 Resposta

Rangel_Zutin

Veja a solucao em http://www.guj.com.br/posts/list/209096.java#1062806

Criado 6 de junho de 2010
Ultima resposta 7 de jun. de 2010
Respostas 1
Participantes 1