HandlerInterceptorAdapter

HandlerInterceptorAdapter

我有一个扩展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内部进行。

谢谢

最佳答案

在解组参数#preHandle并将其传递给Utente之前,将调用#areaRiservataPost方法。


参见spring-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中使用

关于java - 如何从HandlerInterceptorAdapter检索modelAttribute,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35364177/

10-09 17:58