Рубрики
Без рубрики

Модель, карта модели и ModelAndView в Spring MVC

Узнайте о модели интерфейсов, карте моделей и ModelAndView, предоставляемых Spring MVC.

Автор оригинала: baeldung.

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 .