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 требуется зависимость spring-web :
org.springframework spring-web 5.2.2.RELEASE
Последние версии зависимости spring-web можно найти здесь .
И, если мы используем Thymeleaf в качестве нашего представления, мы должны добавить эту зависимость к pom.xml:
org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE
Последнюю версию зависимости Thymeleaf можно найти здесь .
3. Модель
Давайте начнем с самого основного понятия здесь – Модель .
Проще говоря, модель может предоставлять атрибуты, используемые для визуализации представлений.
Чтобы предоставить представление с полезными данными, мы просто добавляем эти данные в его Модель объект. Кроме того, карты с атрибутами могут быть объединены с экземплярами Model :
@GetMapping("/showViewPage") public String passParametersWithModel(Model model) { Mapmap = new HashMap<>(); map.put("spring", "mvc"); model.addAttribute("message", "Baeldung"); model.mergeAttributes(map); return "viewPage"; }
4. Карта моделей
Как и интерфейс Model выше, Model Map также используется для передачи значений для визуализации представления.
Преимущество Model Map заключается в том, что он дает нам возможность передавать коллекцию значений и обрабатывать эти значения так, как если бы они находились в пределах Map :
@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-кода thymeleaf:
Title Web Application. Passed parameter : th:text="${message}"
Переданный здесь параметр используется через синтаксис ${message} , который известен как заполнитель. Механизм шаблонов Thymeleaf заменит этот заполнитель фактическим значением из атрибута с тем же именем, переданного через модель.
7. Заключение
В этом кратком руководстве мы обсудили три основные концепции Spring MVC – Model , ModelMap и ModelAndView . Мы также рассмотрели примеры того, как представление может использовать эти значения.
Как всегда, реализацию всех этих примеров и фрагментов кода можно найти на Github .