Как передать атрибут сеанса как аргумент метода (параметр) с помощью Spring MVC

Короче говоря, я хочу что-то вроде:

public String action(@SessionAttribute User user) {..} 

вместо

 public String action(HttpSession session) { User user = session.getAttribute("user"); } 

Главным образом ради:

  • читабельность
  • модульное тестирование

Я нашел решение .

Идея заключается в регистрации пользовательского WebArgumentResolver для AnnotationMethodHandlerAdapter , который обрабатывает пользовательскую аннотацию – @SessionAttribute (или @SessionParam ).

Одно примечание к размещенному в нем param.getParameterName() – параметр param.getParameterName() может использоваться, если value не указано.

Для тех, кто прибывает через Google, по крайней мере 4.3.2.RELEASE, Spring включает @SessionAttribute аннотацию @SessionAttribute :

 public String action( @SessionAttribute(required=false, name="user") User user) { // ... } 

Специальное решение больше не требуется.

Даже если мы используем пользовательский пользователь @ModelAttribute («пользователь») как параметр метода, а затем используем объект пользователя в вашем методе, он будет обновлять пользователя из сеанса. Имя атрибута должно совпадать с именем атрибута сеанса «пользователь».

 public String myMethod( @ModelAttribute("user") User user ){ System.out.println(user.getDetails()); } 
  • Можно ли настроить SpringMVC для обработки всех запросов, но исключить каталоги статического содержимого?
  • 404 перенаправляет ошибку Spring с помощью java config
  • spring Exception при запуске приложения в WebSphere с java 8
  • Кто устанавливает тип содержимого ответа в Spring MVC (@ResponseBody)
  • Как создать пользовательский идентификатор, используя hibernate, в то время как он должен быть первичным ключом таблицы
  • Весна: загрузка файла RESTFUL Web Service
  • Использование Spring MVC Test для модульного тестирования многостраничного запроса POST
  • Вручную вызовите функцию Spring Annotation Validation
  • Поиск URL вашего приложения только с помощью ServletContext
  • Как решить «не удалось лениво инициализировать сборку роли» Исключение Hibernate
  • Как загрузить файл с сервера с помощью jQuery AJAX и Spring MVC 3
  • Давайте будем гением компьютера.