我已经将访问决策管理器配置为在由Servlet处理之前检查请求,关键是:

HttpServletRequest request = (HttpServletRequest) RequestContextHolder.currentRequestAttributes().getRequest();

都好。但是,当请求是enctype="multipart/form-data"时,当MultipartHttpServletRequest仅返回RequestContextHolder.currentRequestAttributes().getRequest()时,如何保留HttpServletRequest

我正在使用Spring 2.5。

最佳答案

MultipartHttpServletRequest是n特定于Spring的接口,用于处理多部分表单提交。默认实现是DefaultMultipartHttpServletRequest,它具有一个采用HttpServletRequest的构造函数。

所以:

HttpServletRequest originalRequest = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
MultipartHttpServletRequest multiPartRequest = new DefaultMultipartHttpServletRequest(originalRequest);

09-26 11:15