如何从HandlerInterceptorAdapter检索modelAttribute

时间:2016-02-12 13:45:38

标签: java spring-mvc model-view-controller reflection interceptor

我有一个扩展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 个答案:

答案 0 :(得分:1)

在论证#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

中检索并使用该对象