【问题标题】:How to retrieve a modelAttribute from HandlerInterceptorAdapter如何从 HandlerInterceptorAdapter 中检索 modelAttribute
【发布时间】:2016-02-12 13:45:37
【问题描述】:

我有一个扩展 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){}   
   }

正如我之前所说,我必须在扩展HandlerInterceptorAdapter 的类的方法preHandle 内“编辑”对象Utente。 我不明白在哪里可以检索对象Utente。 从请求?表格Object handler?

postHandle的方法中很容易做到,因为我可以从参数ModelAndView中得到它,但是我不知道如何在preHandle里面做到。

谢谢

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2015-02-09
      • 2011-10-14
      • 2020-10-09
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 2018-04-14
      • 2017-12-12
      相关资源
      最近更新 更多