Как передать атрибут сеанса как аргумент метода (параметр) с помощью 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()); } 
  • Как использовать Collections.sort () в Java? (Конкретная ситуация)
  • Spring MVC - Как вернуть простую строку в JSON в Rest Controller
  • Почему Spring MVC нуждается по крайней мере в двух контекстах?
  • Spring MVC Controller: redirect без параметров, добавленных в мой url
  • Весенний совет АОП по аннотированным controllerам
  • Каков правильный способ использования Spring MVC с Hibernate в DAO, архитектуры уровня обслуживания
  • Бесконечная recursion с выпуском Jackson JSON и Hibernate JPA
  • Spring RedirectAttributes: addAttribute () vs addFlashAttribute ()
  • Отключить Spring Security для OPTIONS Http Method
  • Как сопоставить запросы к HTML-файлу в Spring MVC?
  • Разбор json в java-объекты в spring-mvc
  • Interesting Posts

    Включить клавиши F1-F12 без Fn на Lenovo Ideapad S400u

    Могу ли я получить доступ к серверу разработки ASP.NET в интрасети?

    Изменение поведения прокрутки по умолчанию в заголовке раздела UITableView

    Почему значения даты / времени неверно интерпретируются при исправлении / сохранении?

    Можно ли отмечать или выделять плохие блоки на HDD?

    Проверьте, содержит ли список любой другой список

    Как реализовать autocompletetextview с помощью listview?

    IllegalBlockSizeException при попытке шифрования и расшифровки строки с помощью AES

    Утилита Windows для сохранения / восстановления размера окна и истории позиций?

    Как работает экзистенциальный оператор CoffeeScript?

    поплавковые биты и строгий псевдоним

    Как найти рабочую папку приложения на основе сервлета для загрузки ресурсов

    Как смонтировать сжатый ISO-образ?

    Является ли Haskell действительно чистым (есть ли какой-либо язык, который занимается вводом и выходом вне системы)?

    Как разобрать JSON с VBA без внешних библиотек?

    Давайте будем гением компьютера.