как использовать перехватчик, определенный в разных пакетах в стойках 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>

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


person ipkiss    schedule 27.01.2013    source источник


Ответы (2)


Наличие пакета «posts», расширяющего «default», решит проблему.

person Quaternion    schedule 27.01.2013

Есть два способа включить перехватчики в 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>

Также я даю две ссылки, ссылайтесь на эту ссылку, например, на одну из тех, на которые я ссылался только по этим ссылкам. Полная концепция перехватчиков. Основные перехватчики

person Raki    schedule 27.01.2013