2013-01-27 2 views
7

я определил перехватчик следующим образом:Как использовать перехватчик, определенный в разных пакетах в стойках 2?

<package name="default" extends="struts-default" > 
    <interceptors> 
     <interceptor-stack name="myStack"> 
      <interceptor-ref name="timer"/> 
      <interceptor-ref name="logger"/> 
     <interceptor-ref name="defaultStack"/> 
     </interceptor-stack> 
    </interceptors> 

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

</package> 

И затем использовать myStack в другом пространстве имен:

<package name="posts" namespace="/posts" extends="struts-default,json-default"> 

     <action name="question/ask" class="someclass.QuestionAction"> 
      <interceptor-ref name="myStack"></interceptor-ref> 
      <result name="success">/WEB-INF/jsp/post_question.jsp</result> 
      <result name="input">/WEB-INF/jsp/post_question.jsp</result> 
     </action> 

    </package> 

Это не сработало, потому что в пакете сообщений, он не мог найдите стек перехватчика с именем myStack. Как я могу решить эту проблему?

ответ

8

Наличие пакета «сообщений», расширяющих «умолчание», решит проблему.

2

Существует два способа является то, чтобы включить перехватчики в struts.xml

First: 

1) Если вы пишете какие-перехватчики в другой XML-файл & вы хотите использовать, что перехватчики в средствах struts.xml файлов, вы должны включить этот файл в struts.xml

Например: Учитывать other.xml file is file.xml & вы хотите включить в struts.xml так,

в struts.xml вы должны написать

<struts> 
    <include file="file.xml"></include> 
     <package name="posts" namespace="/posts" extends="struts-default,json-default"> 
     <action name="question/ask" class="someclass.QuestionAction"> 
       <interceptor-ref name="myStack"></interceptor-ref> 
       <result name="success">/WEB-INF/jsp/post_question.jsp</result> 
       <result name="input">/WEB-INF/jsp/post_question.jsp</result> 
      </action> 
     </package> 

</struts> 

Second Way: Вы должны включить перехватчики в пределах struts.xml и передать имя в своем классе действий, то он будет работать правильно, как это.

<package name="default" extends="struts-default"> 
    <interceptors> 
     <interceptor name="timer" class=".."/> 
     <interceptor name="logger" class=".."/> 
     <interceptor-stack name="myStack"> 
      <interceptor-ref name="timer"/> 
      <interceptor-ref name="logger"/> 
     </interceptor-stack> 
    </interceptors> 

<action name="login" 
    class="tutuorial.Login"> 
     <interceptor-ref name="myStack"/> 
     <result name="input">login.jsp</result> 
     <result name="success" 
      type="redirect-action">/secure/home</result> 
</action> 
</package> 

Также я даю две ссылки, ссылаясь на эти ссылки, например, один из указанных мной ссылок. Full Interceptors Concept. Basic Interceptors