2013-08-28 80 views
45

Sự khác biệt chính giữa các lớp học Spring Framework sau đây là gì?Sự khác nhau giữa Model, ModelMap và ModelAndView là gì?

  • Model
  • ModelMap
  • ModelAndView

Sử dụng Model.put(String,Object) chúng ta có thể truy cập vào các giá trị trong .jsp file, nhưng ModelMap.addAttribute(String,Object) cũng đã làm điều tương tự. Tôi không hiểu sự khác biệt giữa các lớp này.

+0

có thể trùng lặp của http://stackoverflow.com/q/3344627/2607501 – Prancer

Trả lời

54

Model là giao diện trong khi ModelMap là một lớp.

ModelAndView chỉ là vùng chứa cho cả đối tượng xem ModelMap và đối tượng xem. Nó cho phép một bộ điều khiển trả về cả hai như là một giá trị duy nhất.

+0

Sau khi đào bới xung quanh, lý do tốt nhất mà tôi tìm thấy sử dụng một ModelMap (loại chôn trong vikas Harle của câu trả lời và không được hiển thị trong ví dụ) là khi thêm thuộc tính vào một Sơ đồ mô hình, bạn có thể bỏ qua tên thuộc tính (khóa) và mùa xuân sẽ tạo khóa thuộc tính dựa trên giá trị thuộc tính. https://docs.spring.io/spring/docs/4.3.14.RELEASE/spring-framework-reference/htmlsingle/#mvc-coc-modelmap – Tim

7

Mô hình: là một giao diện chứa bốn thuộc tính bổ sung và một phương pháp merAttribute.

Bản đồ mẫu: triển khai Giao diện bản đồ. Nó cũng chứa phương thức Map.

ModelAndView: Vì Bart giải thích nó cho phép bộ điều khiển trả về cả hai giá trị đơn.

11

Sự khác nhau giữa Model, ModelMap, và ModelAndView

mẫu: Nó là một giao diện. Nó định nghĩa một chủ sở hữu cho các thuộc tính mô hình và được thiết kế chủ yếu để thêm các thuộc tính vào mô hình.

Ví dụ:

@RequestMapping(method = RequestMethod.GET) 
    public String printHello(Model model) { 
      model.addAttribute("message", "Hello World!!"); 
      return "hello"; 
     } 

ModelMap: Thực hiện Bản đồ để sử dụng khi xây dựng mô hình dữ liệu để sử dụng với giao diện người dùng tools.Supports xích cuộc gọi và tạo ra các mô hình tên thuộc tính.

Ví dụ:

@RequestMapping("/helloworld") 
public String hello(ModelMap map) { 
    String helloWorldMessage = "Hello world!"; 
    String welcomeMessage = "Welcome!"; 
    map.addAttribute("helloMessage", helloWorldMessage); 
    map.addAttribute("welcomeMessage", welcomeMessage); 
    return "hello"; 
} 

ModelAndView: Lớp này chỉ đơn thuần là giữ cả hai để làm cho nó có thể cho một bộ điều khiển để trả lại cả hai mô hình và xem trong một giá trị trả về duy nhất.

Ví dụ:

@RequestMapping("/welcome") 
public ModelAndView helloWorld() { 
     String message = "Hello World!"; 
     return new ModelAndView("welcome", "message", message); 
    } 
+2

Hơi lạ khi bao gồm dòng đầu tiên đó. Giống như, nó không thực sự quan trọng bạn là ai miễn là bạn có thể trả lời câu hỏi. – Clonkex

+0

Chúng ta có nên thêm Model hoặc ModelMap trong các tham số phương thức để truy cập nó trong khung nhìn hay không. –

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