Model, ModelMap и представление модели в Spring MVC

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.