2015-01-28 20 views
6

Tôi đang so sánh ModelMapModel từ Spring MVC. Ngoài sự khác biệt rõ ràng rằng đầu tiên là một lớp và thứ hai một giao diện là có bất kỳ sự khác biệt mà làm cho việc sử dụng một hoặc khác thích hợp hơn trong các tình huống khác nhau?Mẫu Bản đồ và Mô hình trong Mùa xuân MVC

Chủ yếu chúng được sử dụng cho cùng một mục đích (như từ spring MVC tài liệu):

java.util.Map/org.springframework.ui.Model/ org.springframework.ui.ModelMap cho làm phong phú mô hình tiềm ẩn mà hiển thị với chế độ xem web.

Chỉ có tôi đã phát hiện ra có nó mà ModelMap được tăng cường Map, tuy nhiên sự khác biệt cho Model vẫn chưa rõ ràng.

Tôi có thể kết luận từ ModelMap javadoc rằng 'Mô hình' được ưu tiên cho java 5 không?

Kiểm tra giao diện Mô hình cho phiên bản giao diện dựa trên Java-5 có cùng mục đích.

Tuy nhiên dường như không ModelMap sẽ không còn được dùng nữa. Nhưng tại sao ModelMap không triển khai Model?

+2

'ExtendedModelMap' được mở rộng' ModelMap' và thực hiện 'ModelMap'. Khi sử dụng 'Model', bạn có thể gọi phương thức chain như hầu hết các phương thức trả về' Model' với một 'Map' hoặc' ModelMap' không phải như vậy. –

+0

cảm ơn 'ExtendedModelMap'. AFAIK bạn cũng có thể thực hiện các cuộc gọi với 'Bản đồ mẫu' (khác biệt với' Bản đồ' mà tôi đã nhận thấy). – sodik

+0

Ah vâng bạn đúng. 'ModelMap' cũng có trước giao diện' Model'. Đối với giao diện đó, về cơ bản có 2 bản triển khai, 'ExtendedModelMap' và' RedirectAttributesModelMap' (cũng có 'BindingAwareModelMap' là phần mở rộng của' ExtendedModelMap').Đối với việc sử dụng trong các phương thức ánh xạ yêu cầu, nó thực sự không quan trọng cái nào để sử dụng, mặc dù tôi có thể đề nghị sử dụng giao diện 'Model' thay vì một trong những triển khai thực hiện. Nhưng đó là rất cao :). –

Trả lời

0

Model - Giao diện Java-5 cụ thể xác định chủ sở hữu cho thuộc tính mô hình. Được thiết kế chủ yếu để thêm các thuộc tính vào mô hình. Cho phép truy cập vào mô hình tổng thể dưới dạng java.util.Map.

Đơn giản chỉ cần đặt, mô hình có thể cung cấp các thuộc tính được sử dụng cho chế độ xem hiển thị.


ModelMap - Lớp MapMap về cơ bản là LinkedHashMap. Nó thêm một số phương pháp để thuận tiện. Giống như giao diện Kiểu ở trên, Bản đồ mẫu cũng được sử dụng để chuyển các giá trị để hiển thị chế độ xem.

Ưu điểm của ModelMap là nó mang lại cho chúng ta khả năng để vượt qua một tập hợp các giá trị và đối xử với những giá trị này như thể chúng là trong một bản đồ:

@GetMapping("/printViewPage") 
public String passParametersWithModelMap(ModelMap map) { 
    map.addAttribute("welcomeMessage", "welcome"); 
    map.addAttribute("message", "Baeldung"); 
    return "viewPage"; 
} 

tài liệu tham khảo;

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