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??
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>[/code]
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:
[code]<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