2011-09-18 16 views
5

Tôi đang sử dụng Spring 3.0.5 với các chú thích <context:component-scan>@RequestMapping trên bộ điều khiển của mình. Thao tác này và URL được đăng ký bằng quét gói.<context: component-scan> không chọn @RequestMappings của tôi nếu ánh xạ xử lý được xác định trong XML

Nhưng có một vấn đề khi tôi có một ánh xạ xử lý được xác định trong cấu hình XML. Chú thích @RequestMapping không còn được chọn nữa.

Tôi đã phân tách sự cố thành một ứng dụng đơn giản.

Nếu tôi có bộ điều khiển sau:

package test.pack.age; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 

@Controller 
public class TestController { 
    @RequestMapping(value="/test") 
    public String showTestPage() { 
     return "testPage"; 
    } 
} 

và cấu hình như sau:

<context:component-scan base-package="test.pack.age" /> 
<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix" value="/WEB-INF/jsp/" /> 
    <property name="suffix" value=".jsp" /> 
</bean> 

Ứng dụng này hoạt động chính xác và URL /test được đăng ký và hoạt động đúng.

18/09/2011 20:02:55 org.springframework.web.servlet.handler.AbstractUrlHandlerMapping INFO Mapped URL path [/test] onto handler 'testController' 
18/09/2011 20:02:55 org.springframework.web.servlet.handler.AbstractUrlHandlerMapping INFO Mapped URL path [/test] onto handler 'testController' 

Nhưng nếu tôi thêm ánh xạ xử lý vào XML, nó sẽ không hoạt động nữa. Ngay cả một cái gì đó đơn giản như thế này:

<bean id="handlerMappings" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" /> 

mà về cơ bản không có gì, và <context:component-scan> không còn đăng ký URL của tôi nữa.

Tôi cần một ánh xạ xử lý bổ sung cho một số bộ điều khiển (bên thứ ba) mà tôi không thể chú thích, nhưng khi thêm nó sẽ phá vỡ tất cả các @RequestMapping s của tôi.

Điều này có bình thường không? Một lỗi? (Tôi không thể thay đổi phiên bản Spring)

Tôi có thiếu gì đó không?

Trả lời

4

Điều này có bình thường không? Một lỗi? (Tôi không thể thay đổi phiên bản Spring)

Tôi có thiếu gì đó không?

Tôi đã bỏ lỡ điều gì đó: D. Các mặt hàng này được chôn trong JavaDocs của mùa xuân cho DefaultAnnotationHandlerMapping:

Chú ý: Nếu bạn xác định đậu HandlerMapping tùy chỉnh trong bối cảnh DispatcherServlet của bạn, bạn cần phải thêm một bean DefaultAnnotationHandlerMapping một cách rõ ràng, kể từ đậu tùy chỉnh HandlerMapping thay thế các chiến lược lập bản đồ mặc định.

gia tăng này để XML cấu hình của tôi và bây giờ mọi thứ hoạt động:

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" /> 
0

Tôi không chắc chắn tại sao chú thích Controller của bạn không được chọn nữa, nhưng tôi nghĩ vấn đề của bạn nằm ở số id bạn cung cấp SimpleUrlHandlerMapping. Nó phải là handlerMapping.

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