Posso usar dois interceptors diferentes no struts 2?

4 respostas
R

Pessoal, boa tarde, tenho uma aplicacao onde uso um interceptor apenas para setar dados na sessao e gostaria de usar um outro para verificar se o usuario esta logado, pois sao apenas algumas opcoes especificas que o usuario precisa estar logado para acessar.
Nao sei se fui bem claro
Alguem pode ajudar??

4 Respostas

lcegatti
Pode sim, você pode inclusive definir uma pilha default de interceptor para sua aplicação, aqui um exemplo prático de criar uma pilha default de interceptors:
<package name="root" namespace="/" extends="struts-default">
	   	<interceptors>

                        //Aqui é seu interceptor
	   		<interceptor name="meuInterceptor"
	   			class="pacote.interceptor.MinhaClasseInterceptor" />

                        //Aqui sua pilha de interceptors
	   		<interceptor-stack name="meuInterceptorStack">
	   			<interceptor-ref name="meuInterceptor" />
	   			<interceptor-ref name="basicStack" />
	   			<interceptor-ref name="annotationWorkflow"/>
	   		</interceptor-stack>

	   	</interceptors>

		// Aqui sua pilha default
	   	<default-interceptor-ref name="meuInterceptorStack" />
	   	
       <action name="myAction" class="myActionClass" method="myClassMethod">
           <interceptor-ref name="meuInterceptorStack"/>
           <result name="success">index.jsp</result>
       </action>
	</package>

Mas caso você não queira definir vários interceptors para uma action como neste caso, você pode configurar cada action com seu interceptor que for necessário, por exemplo:

<action name="myAction" class="myActionClass" method="myClassMethod">
           <interceptor-ref name="meuInterceptor"/>
           <result name="success">index.jsp</result>
       </action>

Abraços

R

Valeu cara, era mais ou menos isso mesmo q eu estava fazendo, porem eu estou usando WILD CARDs saca? ae queria saber se tinha como eu ordenar, mas pelo jeito eu tenho q especificar quais os interceptors q atuam sobre determinada action ne?

lcegatti

Então, tem ordem sim, o struts respeita a ordem que vc colocar na sua stack, por exemplo:

<interceptor-stack name="meuInterceptorStack"> <interceptor-ref name="primeiroInterceptor" /> <interceptor-ref name="segundoInterceptor" /> <interceptor-ref name="terceiroInterceptor"/> </interceptor-stack>

Mas ai vem o porém, você tem que especificar seu stack em cada action, ou pode deixa-lo no stack default que será utilizado para todas as actions que vc não definir o :

<default-interceptor-ref name="meuInterceptorStack" />

Abraço

R

Entendi. Muito obrigado pela ajuda

Criado 7 de junho de 2011
Ultima resposta 7 de jun. de 2011
Respostas 4
Participantes 2