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) {
Map map = 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 .