2013-01-27 18 views
7

tôi đã xác định một đánh chặn như sau:cách sử dụng bộ chặn được xác định trong các gói khác nhau trong thanh chống 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> 

Và sau đó sử dụng myStack trong không gian tên khác:

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

này đã không làm việc vì trong gói bài viết, nó không thể tìm chồng ngăn chặn có tên là myStack. Làm cách nào để giải quyết vấn đề này?

Trả lời

8

Có gói "bài đăng" mở rộng "mặc định" sẽ giải quyết được sự cố.

2

Có có hai cách được để bao gồm các tên lửa đánh chặn ở struts.xml

First: 

1) Nếu bạn viết bất kỳ máy bay đánh chặn trong file xml khác & bạn muốn sử dụng lửa đánh chặn tại phương tiện tập tin struts.xml, bạn nên bao gồm rằng tập tin trong struts.xml

Ví dụ: Xem xét other.xml file is file.xml & bạn muốn bao gồm vào struts.xml vậy,

trong struts.xml bạn phải viết

<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: Bạn nên bao gồm các trình chặn trong struts.xml và tham chiếu tên trong lớp hành động của bạn thì nó sẽ hoạt động chính xác như thế này.

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

Ngoài ra tôi đang cung cấp hai liên kết, hãy tham khảo liên kết này, ví dụ: tôi chỉ được giới thiệu từ các liên kết này. Full Interceptors Concept. Basic Interceptors

Các vấn đề liên quan