Spring Web MVC: передать объект из перехватчика обработчика в контроллер? - PullRequest
3 голосов
/ 27 сентября 2010

В настоящее время я использую request.setAttribute () и request.getAttribute () как средство для передачи объекта от перехватчика обработчика в метод контроллера.Я не рассматриваю это как идеальный метод, потому что он требует, чтобы я принял HttpServletRequest в качестве аргумента для своих методов контроллера.Spring делает хорошую работу, скрывая объект запроса от контроллеров, поэтому он мне не понадобится, кроме как для этой цели.

Я попытался использовать аннотацию @RequestParam с именем, заданным в setAttribute (), но, конечно, этоне работает, потому что атрибуты запроса не являются параметрами запроса.Насколько мне известно, нет аннотации @RequestAttribute для использования для атрибутов.

Мой вопрос заключается в том, есть ли лучший способ передачи объектов от перехватчиков методам контроллера, не прибегая к установке их в качестве атрибутов объекта запроса.

Ответы [ 3 ]

1 голос
/ 16 августа 2017

Просто чтобы сэкономить время для тех, кто посещает эту страницу: начиная с Spring 4.3 @ RequestAttribute аннотация является частью Spring MVC, поэтому нет необходимости создавать собственную @RequestAttribute аннотацию.

1 голос
/ 19 ноября 2017

Используйте метод и сессию с префиксом перехватчика:

Перехватчик:

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    if (!(handler instanceof HandlerMethod)) {
        return true;
    }
    HttpSession session = request.getSession();
    String attribute = "attribute";
    session.setAttribute("attributeToPass", attribute);
    return true;
}

Контроллер:

@RequestMapping(method = RequestMethod.GET)
public String get(HttpServletRequest request) {
    String attribute = (String)request.getSession().getAttribute("attribteToPass");
    return attribute;
}
0 голосов
/ 27 сентября 2010

Я не думаю, что есть.

Но вы можете свернуть свою собственную аннотацию @RequestAttribute. См. spring mvc annotation @RequestAttribute, аналогичный @ RequestParam , для аналогичного вопроса и ссылки на источник.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...