Model, ModelMap, dan ModelAndView di Spring MVC

1. Ikhtisar

Pada artikel ini, kita akan melihat penggunaan inti org.springframework.ui.Model , org.springframework.ui.ModelMap dan org.springframework.web.servlet.ModelAndView yang disediakan oleh Spring MVC.

2. Ketergantungan Maven

Mari kita mulai dengan ketergantungan konteks pegas di file pom.xml kita :

 org.springframework spring-context 5.2.2.RELEASE 

Versi terbaru dari ketergantungan konteks pegas dapat ditemukan di sini.

Untuk ModelAndView , dependensi spring-web diperlukan:

 org.springframework spring-web 5.2.2.RELEASE 

Versi terbaru dari ketergantungan spring-web dapat ditemukan di sini.

Dan, jika kita menggunakan Thymeleaf sebagai tampilan kita, kita harus menambahkan ketergantungan ini ke pom.xml:

 org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

Versi terbaru dari ketergantungan Thymeleaf dapat ditemukan di sini.

3. Model

Mari kita mulai dengan konsep paling dasar di sini - Model .

Sederhananya, model dapat menyediakan atribut yang digunakan untuk menampilkan tampilan.

Untuk memberikan tampilan dengan data yang dapat digunakan, kita cukup menambahkan data ini ke objek Modelnya . Selain itu, peta dengan atribut dapat digabungkan dengan contoh Model :

@GetMapping("/showViewPage") public String passParametersWithModel(Model model) { Map map = new HashMap(); map.put("spring", "mvc"); model.addAttribute("message", "Baeldung"); model.mergeAttributes(map); return "viewPage"; }

4. ModelMap

Sama seperti antarmuka Model di atas, ModelMap juga digunakan untuk meneruskan nilai untuk merender tampilan.

Keuntungan ModelMap adalah memberi kita kemampuan untuk meneruskan kumpulan nilai dan memperlakukan nilai-nilai ini seolah-olah berada di dalam Peta :

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

5. ModelAndView

Antarmuka terakhir untuk meneruskan nilai ke tampilan adalah ModelAndView .

Antarmuka ini memungkinkan kami untuk menyampaikan semua informasi yang dibutuhkan oleh Spring MVC dalam satu pengembalian:

@GetMapping("/goToViewPage") public ModelAndView passParametersWithModelAndView() { ModelAndView modelAndView = new ModelAndView("viewPage"); modelAndView.addObject("message", "Baeldung"); return modelAndView; } 

6. Tampilan

Semua data, kami tempatkan dalam model ini, digunakan oleh sebuah view - secara umum, sebuah tampilan templated untuk merender halaman web.

Jika kami memiliki file template Thymeleaf yang ditargetkan oleh metode pengontrol kami sebagai tampilannya. Parameter yang melewati model akan dapat diakses dari dalam kode HTML timeleaf:

   Title Web Application. Passed parameter : th:text="${message}" 

Parameter yang diteruskan di sini digunakan melalui sintaks $ {message} , yang dikenal sebagai placeholder. Mesin template Thymeleaf akan menggantikan placeholder ini dengan nilai aktual dari atribut dengan nama yang sama yang diteruskan melalui model.

7. Kesimpulan

Dalam tutorial singkat ini, kita telah membahas tiga konsep inti dalam Spring MVC - Model , ModelMap dan ModelAndView . Kami juga telah melihat contoh bagaimana tampilan dapat menggunakan nilai-nilai ini.

Seperti biasa, penerapan semua contoh dan cuplikan kode ini dapat ditemukan di Github.