0

У меня есть класс, который расширяет HandlerInterceptorAdapter:Как извлечь modelAttribute из HandlerInterceptorAdapter

public class AreaRiservataInterceptorAdapter extends HandlerInterceptorAdapter {   
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception 
    {} 
} 

мне это нужно, так как я должен «изменить» объект Utente, что вы можете видеть в качестве параметра в этом контроллере ; с HandlerInterceptorAdapter перехватывать запрос перед его отправкой на этот контроллер

@Controller 
    public class AreaRiservata{ 
    @RequestMapping("/prv/areaRiservataPost") 
     public String areaRiservataPost(Model model, Utente utente){} 
    } 

Как я уже говорил раньше, я должен «редактировать» объект Utente внутри метода preHandle класса, который расширяет HandlerInterceptorAdapter. Я не понимаю, где я могу получить объект Utente. От запроса? Форма Object handler?

Это легко сделать в методе postHandle, так как я могу получить его по параметру ModelAndView, но я не знаю, как это сделать внутри preHandle.

Спасибо

ответ

1

#preHandle метод будет вызываться перед аргументом Utente будет unmarshalled и передан #areaRiservataPost.

см пружинный webmvc-3.2.8.RELEASE-sources.jar /org/springframework/web/servlet/DispatcherServlet.java: 919

и org.springframework.web.method.support. InvocableHandlerMethod # getMethodArgumentValues ​​

Следовательно, вы не можете воздействовать на объект, который еще не создан. но, вы можете получить данные из запроса:

Scanner s = new Scanner(request.getInputStream(), "UTF-8").useDelimiter("\\A"); 
s.hasNext() ? s.next() : ""; 

распаковать, а затем поместить объект Utente в request, которые будут затем извлечены и использованы в #areaRiservataPost

Смежные вопросы