Model, ModelMap и ModelAndView през пролетта MVC

1. Общ преглед

В тази статия ще разгледаме използването на ядрото org.springframework.ui.Model , org.springframework.ui.ModelMap и org.springframework.web.servlet.ModelAndView, предоставено от Spring MVC.

2. Зависимости на Maven

Нека започнем с зависимостта spring-context в нашия файл pom.xml :

 org.springframework spring-context 5.2.2.RELEASE 

Най-новата версия на зависимостта spring-context може да бъде намерена тук.

За ModelAndView , за пролет-уеб се изисква зависимостта:

 org.springframework spring-web 5.2.2.RELEASE 

Най-новите версии на зависимостта spring-web можете да намерите тук.

И ако използваме Thymeleaf като наш изглед, трябва да добавим тази зависимост към pom.xml:

 org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

Най-новата версия на зависимостта от мащерка може да бъде намерена тук.

3. Модел

Нека започнем с най-основната концепция тук - Моделът .

Най-просто казано, моделът може да предостави атрибути, използвани за изобразяване на изгледи.

За да осигурим изглед с използваеми данни, ние просто добавяме тези данни към обекта си 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

Точно както Модел интерфейса по-горе, ModelMap се използва и за подаването на стойности да се направи оглед.

Предимството на ModelMap е, че ни дава възможност да предадем колекция от стойности и да се отнасяме към тях като към карта :

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

5. ModelAndView

Последният интерфейс за предаване на стойности на изглед е ModelAndView .

Този интерфейс ни позволява да предадем цялата информация, изисквана от Spring MVC, в едно връщане:

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

6. Изгледът

Всички данни, които ние поставяме в тези модели, се използват от изглед - като цяло, шаблонен изглед за изобразяване на уеб страницата.

Ако имаме файл с шаблон на Thymeleaf, насочен от методите на нашия контролер като техен изглед. Параметър, преминал през модела, ще бъде достъпен от HTML кода на мащерка:

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

Параметърът, предаден тук, се използва чрез синтаксиса $ {message} , който е известен като заместител. Механизмът на шаблона на Thymeleaf ще замени това запазено място с действителна стойност от атрибут със същото име, предаден през модела.

7. Заключение

В този бърз урок обсъдихме три основни концепции в Spring MVC - Model , ModelMap и ModelAndView . Разгледахме и примери за това как изгледът може да използва тези стойности.

Както винаги, изпълнението на всички тези примери и кодови фрагменти може да бъде намерено в Github.