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??
Posso usar dois interceptors diferentes no struts 2?
4 Respostas
<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
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?
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
Entendi. Muito obrigado pela ajuda