2013-01-27 13 views
7

Mam zdefiniował przechwytywania następująco:jak używać przechwytywacza zdefiniowanego w różnych pakietach w rozporach 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> 

a następnie użyć myStack w innej przestrzeni nazw:

<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> 

to nie działa, ponieważ w pakiecie posty, to nie mogło znajdź stos przechwytujący o nazwie myStack. Jak mogę rozwiązać ten problem?

Odpowiedz

8

Posiadanie "postów" w pakiecie rozszerzających "domyślne" rozwiązałoby problem.

2

Istnieją dwa sposoby, aby się tam zawierać przechwytujących w struts.xml

First: 

1) Jeśli piszesz jakieś przechwytujących w innym pliku xml & chcesz używać tego przechwytujących w środkach plików struts.xml, należy uwzględnić ten plik w struts.xml

Np Rozważmy other.xml file is file.xml & chcesz dołączyć do struts.xml Więc

w struts.xml trzeba napisać

<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: należy Zawierać przechwytujących w ramach struts.xml i przekazać nazwę w swojej klasie działania to będzie działać poprawnie w takim stanie.

<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> 

Podaję również dwa linki, odsyłam do linków do jednego z np. Wymienionych z tych linków. Full Interceptors Concept. Basic Interceptors

Powiązane problemy