Struts 2 Interceptor - Não consigo chamar o interceptor

3 respostas
edysnipes

Olá,

preciso implementar um controle de login simples e para isso gostaria de utilizar o interceptor do struts 2.

Para isso:

package *******************;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class LoginInterceptor extends AbstractInterceptor {

	private static final long serialVersionUID = -6073110797987730212L;

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		System.out.println("Testando Interceptor");
		return invocation.invoke();  
			
	}

	
}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.devMode" value="true" />
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />  
	
	<!-- Configuration for the default package. -->
    <package name="default" extends="struts-default">
	
		<interceptors>
            <interceptor name="loginInterceptor" class="br.mil.marinha.spi.interceptors.LoginInterceptor" />
        	<interceptor-stack name="sispnrStack">
        		<interceptor-ref name="loginInterceptor" />    
                <interceptor-ref name="defaultStack" /> 
        	</interceptor-stack>
        </interceptors>
        
       <default-interceptor-ref name="sispnrStack" />  
        
        <global-results>
            <result name="login">login.jsp</result>
        </global-results>

	</package>
</struts>

O problema é que

System.out.println("Testando Interceptor");

nunca é executado o que entendo como se o interceptor não estivesse sendo chamado.

Obs: Eu uso annotations do struts 2. Como isso as action e results estão configurados na propria action.

Agradeço.

3 Respostas

tpmarc

Nunca desenvolvi usando Struts, mas acredito que seus Interceptors funcionem da mesma maneira do VRaptor…

no VRaptor preciso anotar meu interceptor com @Intercepts. Você não precisa chamá-lo, pois framework fará isso.

edysnipes

Não tem essa anotação no struts 2 não.

Mais alguma sugestão?

edysnipes

Senhores voltei no tópico pois ainda estou com esse problema.

Criado 10 de fevereiro de 2011
Ultima resposta 15 de mar. de 2011
Respostas 3
Participantes 2