Spring 3.x MVC Controller: добавление атрибута в запрос / сеанс

1

Я новичок в Spring и задаю основной вопрос, связанный с классом контроллера Spring 3 MVC.

У меня этот метод ниже в моем контроллере:

@RequestMapping("/index")
public String listContacts(Map<String, Object> map) {
    map.put("contacts", new EmployeeForm());
    map.put("contactList", employeeService.listEmployee());
    return "contacts";
}

В JSP файле я получаю доступ к contactList используя этот ниже код:

<c:forEach items="${contactList}" var="contact">
<tr>
    <td>${contact.lastname}, ${contact.firstname} </td>
    <td>${contact.email}</td>
    <td>${contact.telephone}</td>
    <td><a href="delete/${contact.id}">delete</a></td>
</tr>
</c:forEach>

Мое замешательство:

Я не добавил, что contactList в contactList session или request в моем классе контроллера, то как я могу получить доступ к тому же в JSP файле, используя ${contactList}?

Просьба уточнить.

Теги:
jsp
spring
spring-mvc
spring-3

2 ответа

4
Лучший ответ

Аргумент Map который у вас есть в методе обработчика контроллера, эффективно используется в качестве карты атрибутов модели.

Атрибуты модели (обычно) добавляются как атрибуты HttpServletRequest перед визуализацией представления.

Это объясняется в документации здесь.

Ниже приведены поддерживаемые аргументы метода:

  • java.util.Map/org.springframework.ui.Model/org.springframework.ui.ModelMap для обогащения неявной модели, которая подвергается веб-просмотру.
  • 0
    @ user182944 Какая часть? Все, что вы добавляете на Map , будет добавлено в качестве атрибута запроса.
1

Spring предоставляет вам карту или в основном модель представления, которую вы можете заполнить в методе обработчика контроллера. После завершения обработчика Spring добавляет все, что вы добавили в Map, в контекст jsp, чтобы к ним можно было обращаться как к обычным переменным контекста. Я верю, что переменные добавляются в область "запрос" для доступа по JSP-коду, но я не уверен, так как это может быть область "страницы".

Поскольку обработчик и рендеринг представлений обрабатываются (управляются Spring) в том же запросе, нет необходимости хранить какую-либо информацию о модели в сеансе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню