Model, ModelMap и Model View в Spring MVC
1. обзор
В этой статье мы рассмотрим использование ядерorg.springframework.ui.Model,org.springframework.ui.ModelMap иorg.springframework.web.servlet.ModelView, предоставляемых Spring MVC.
2. Maven Зависимости
Начнем с зависимостиspring-context в нашем файлеpom.xml:
org.springframework
spring-context
4.3.11.RELEASE
Последнюю версию зависимости Spring-context можно найтиhere.
ДляModelAndView требуется зависимостьspring-web:
org.springframework
spring-web
4.3.11.RELEASE
Последние версии зависимости Spring-Web можно найти вhere.
И, если мы используем Thymeleaf в качестве нашего представления, мы должны добавить эту зависимость в pom.xml:
org.thymeleaf
thymeleaf-spring3
3.0.8.RELEASE
Последнюю версию зависимости Thymeleaf можно найтиhere.
3. Modelс
Давайте начнем с самого основного понятия -Model.
Проще говоря, модель может предоставлять атрибуты, используемые для визуализации представлений.
Чтобы предоставить представление с полезными данными, мы просто добавляем эти данные в его объектModel. Кроме того, карты с атрибутами могут быть объединены с экземплярамиModel:
@GetMapping("/showViewPage")
public String passParametersWithModel(Model model) {
Map map = new HashMap<>();
map.put("spring", "mvc");
model.addAttribute("message", "example");
model.mergeAttributes(map);
return "viewPage";
}
4. ModelMapс
Как и интерфейсModel выше,ModelMap также используется для передачи значений для рендеринга представления.
ПреимуществоModelMap в том, что он дает нам возможность передавать набор значений и обрабатывать эти значения так, как если бы они находились в пределахMap:
@GetMapping("/printViewPage")
public String passParametersWithModelMap(ModelMap map) {
map.addAttribute("welcomeMessage", "welcome");
map.addAttribute("message", "example");
return "viewPage";
}
5. ModelAndViewс
Последний интерфейс для передачи значений в представление -ModelAndView.
Этот интерфейс позволяет нам передавать всю информацию, требуемую Spring MVC, за один возврат:
@GetMapping("/goToViewPage")
public ModelAndView passParametersWithModelAndView() {
ModelAndView modelAndView = new ModelAndView("viewPage");
modelAndView.addObject("message", "example");
return modelAndView;
}
6. Вид
Все данные, которые мы помещаем в эти модели, используются представлением - в общем, шаблонным представлением для визуализации веб-страницы.
Если у нас есть файл шаблона Thymeleaf, нацеленный на методы нашего контроллера в качестве их представления. Параметр, передаваемый через модель, будет доступен из HTML-кода тимелина:
Title
Web Application. Passed parameter : th:text="${message}"
Переданный здесь параметр используется через синтаксис${message}, который известен как заполнитель. Шаблонный движок Thymeleaf заменит этот заполнитель фактическим значением из атрибута с тем же именем, переданного через модель.
7. Заключение
В этом кратком руководстве мы обсудили три основных концепции Spring MVC -Model,ModelMap иModelAndView. Мы также рассмотрели примеры того, как представление может использовать эти значения.
Как всегда, реализацию всех этих примеров и фрагментов кода можно найти вover on Github.