2010-08-12 34 views
15

Sử dụng Spring 3.0.2.RELEASE. Tôi đang có 2 bộ điều khiển trong gói com.myCompany. Controllers được kích hoạt thông qua phần quétliên kết Spring HandlerInterceptor chỉ với một bộ điều khiển

<context:component-scan base-package="com.myCompany" /> 

sau đó tôi đang gặp một ràng buộc đánh chặn với 2 bộ điều khiển qua

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name="interceptors"> 
    <list> 
     <ref bean="myInterceptor"/> 
    </list> 
    </property> 
</bean> 

Làm thế nào tôi có thể ràng buộc đánh chặn để chỉ có một điều khiển cụ thể hoặc chỉ số phương pháp bên trong một Controller? Bối cảnh: Tôi muốn kiểm tra URL mà nó có chứa một số thông số

Docu Link

+0

Kiểm tra cũng [giải pháp này] (http://karthikg.wordpress.com/2009/10/12/athandlerinterceptor-for-spring-mvc/) với việc sử dụng tùy chỉnh chú thích. –

Trả lời

19

Khi bạn tiêm chặn vào một bean HandlerMapping, những tên lửa đánh chặn áp dụng cho mọi xử lý ánh xạ bởi HandlerMapping đó. Điều đó là tốt trong những ngày trước khi chú thích, vì bạn chỉ cần cấu hình nhiều bean HandlerMapping. Tuy nhiên, với chú thích, chúng tôi có xu hướng có một đơn DefaultAnnotationHandlerMapping ánh xạ mọi thứ, vì vậy mô hình này không hoạt động.

Giải pháp là sử dụng <mvc:interceptors>, nơi bạn ánh xạ đường dẫn tới các hạt đánh chặn một cách rõ ràng. Xem docs, và ví dụ này:

<mvc:interceptors> 
    <mvc:interceptor> 
     <mvc:mapping path="/secure/*"/> 
     <bean class="org.example.SecurityInterceptor" /> 
    </mvc:interceptor> 
</mvc:interceptors> 
+0

@skaffman Công việc tốt –

+0

Cảm ơn bạn. Nhưng tôi không hiểu. Tôi có thể thêm đoạn mã vào Tệp có chứa " không? Sau đó, tôi nhận được" org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: Ký tự đại diện phù hợp là nghiêm ngặt, nhưng không thể khai báo cho phần tử 'mvc: interceptors'. " Tôi đã thêm xmlns: mvc =" http://www.springframework.org/schema/mvc " –

+0

@Martin: Xem phần cố định Bạn cần thêm 'schemaLocation' ngoài không gian tên – skaffman

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