Olá!
Eu criei um interceptor e quero que ele faça uma interceptação após o action, só que ele está fazendo antes, como faço pra resolver isso?
como especifiquei o interceptor no struts.xml:
<interceptors>
<interceptor name="authorizationInterceptor" class="interceptadores.AuthorizationInterceptor" />
</interceptors>
<action name="Logar" method="logar" class="action.SecurityAction">
<result name="login">safeArea/main.jsp</result>
<result name="input">pages/login.jsp</result>
</action>
aqui está o interceptor:
public String intercept(ActionInvocation ai) throws Exception {
String retorno = Action.LOGIN;
Object action = ai.getAction();
Map session = ai.getInvocationContext().getSession();
Pessoa usuario = (Pessoa) session.get("pessoa");
if(usuario!=null)
System.out.println("usuario logado: "+usuario.getUsuario());
if(usuario == null) {
retorno = Action.INPUT;
}
return retorno;
}
valeu!
RESPOSTA:
Eu mantive o meu action normalmente, entretanto mudei o struts.xml:
<action name="Logar" method="logar" class="action.SecurityAction">
<result name="login" type="redirectAction">main</result>
<result name="input">pages/login.jsp</result>
</action>
<action name="main">
<interceptor-ref name="authorizationInterceptor" />
<result name="login">safeArea/main.jsp</result>
<result name="input">pages/login.jsp</result>
</action>
Ao invés de deixar o interceptor na action Logar, eu criei outra action chamada main e coloquei o interceptor nela, e na action Logar eu coloquei um redirectAction para a action main!