2011-12-04 35 views
10

Tôi tạo ra một dự án Spring MVC sử dụng một mẫu được tạo ra từ STS và đây là những gì được tạo ra trong bộ điều khiển:Tham số phương thức bộ điều khiển MVC của Spring hoạt động như thế nào?

@RequestMapping(value = "/", method = RequestMethod.GET) 
public String home(Locale locale, Model model) { 
    //stuff 
} 

Câu hỏi của tôi là, làm thế nào để biến localemodel có được thông qua vào home phương pháp?

Ngoài ra, các tùy chọn có thể có cho các đối tượng có thể được chuyển cho phương pháp là gì?

Trả lời

14

Câu trả lời chung là "Phép thuật mùa xuân"; tuy nhiên, "Supported handler method arguments and return types" trong chương MVC của hướng dẫn tham khảo Mùa xuân có câu trả lời chính xác cho câu hỏi của bạn.

+1

Đó chính xác là những gì tôi đang tìm kiếm. Cảm ơn! – ryanprayogo

+0

câu trả lời hoàn hảo :) –

7

Câu trả lời kỹ thuật là thông qua việc sử dụng cơ chế SpringMVC HandlerAdapter.

Bằng cách xử lý DispatcherServlet của mùa xuân, bộ điều hợp Handler được tạo và cấu hình cho mỗi yêu cầu được gửi đi.

Tôi nghĩ rằng "phép thuật mùa xuân" trong trường hợp này là AnnotationMethodHandlerAdapter nằm trong gói mvc mùa xuân. Bộ điều hợp này về cơ bản sẽ được "ánh xạ" tới một yêu cầu HTTP dựa trên các đường dẫn HTTP, các phương thức HTTP và các tham số yêu cầu gắn với yêu cầu.

Vì vậy, rất cần thiết khi bộ điều phối lò xo nhận dạng yêu cầu có đường dẫn "/", nó sẽ kiểm tra các phương thức trong vùng chứa được chú thích bằng chú thích RequestMapping.

Trong trường hợp của bạn nó thấy là nó ...

Sau đó, sự kỳ diệu thực sự bắt đầu ...

Sử dụng java phản ánh, mùa xuân sau đó sẽ giải quyết các đối số của phương pháp điều khiển của bạn. Vì vậy, trong trường hợp của bạn, Locale và model sẽ tự động được chuyển cho bạn. Nếu bạn bao gồm một trang web khác như tham số, chẳng hạn như HttpSession, thông tin đó sẽ được chuyển cho bạn.

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