Model, ModelMap, dan ModelAndView di Spring MVC

1. Gambaran keseluruhan

Dalam 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. Pergantungan Maven

Mari mulakan dengan pergantungan konteks musim bunga dalam fail pom.xml kami :

 org.springframework spring-context 5.2.2.RELEASE 

Versi terbaru dari pergantungan konteks musim bunga boleh didapati di sini.

Untuk ModelAndView , pergantungan web-spring diperlukan:

 org.springframework spring-web 5.2.2.RELEASE 

Versi terkini pergantungan web musim bunga boleh didapati di sini.

Dan, jika kita menggunakan Thymeleaf sebagai pandangan kita, kita harus menambahkan kebergantungan ini ke pom.xml:

 org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

Versi ketergantungan Thymeleaf terkini boleh didapati di sini.

3. Model

Mari mulakan dengan konsep paling asas di sini - Model .

Ringkasnya, model ini dapat menyediakan atribut yang digunakan untuk menghasilkan pandangan.

Untuk memberikan pandangan dengan data yang boleh digunakan, kita hanya menambah data ini untuk fiturnya Model objek. 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. Peta Model

Sama seperti antara muka Model di atas, ModelMap juga digunakan untuk menyampaikan nilai untuk memberikan pandangan.

Kelebihan ModelMap adalah memberi kita kemampuan untuk melewati koleksi nilai dan memperlakukan nilai-nilai ini seolah-olah berada dalam Peta :

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

5. ModelAndView

Antara muka terakhir untuk menyampaikan nilai ke paparan adalah ModelAndView .

Antaramuka ini membolehkan kami menyampaikan semua maklumat yang diperlukan oleh Spring MVC sekali gus:

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

6. Pandangan

Semua data, yang kami letakkan dalam model ini, digunakan oleh tampilan - secara umum, tampilan templat untuk membuat halaman web.

Sekiranya kita mempunyai fail templat Thymeleaf yang disasarkan oleh kaedah pengawal kami sebagai pandangan mereka. Parameter yang dilalui model akan dapat diakses dari dalam kod HTML thymeleaf:

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

Parameter yang dilalui di sini digunakan melalui sintaks $ {message} , yang dikenali sebagai placeholder. Enjin templat Thymeleaf akan menggantikan tempat letak ini dengan nilai sebenar dari atribut dengan nama yang sama yang dilalui model.

7. Kesimpulannya

Dalam tutorial ringkas ini, kami telah membincangkan tiga konsep teras dalam Spring MVC - Model , ModelMap dan ModelAndView . Kami juga melihat contoh bagaimana pandangan dapat menggunakan nilai-nilai ini.

Seperti biasa, pelaksanaan semua contoh dan coretan kod ini terdapat di Github.