从HttpServletRequest转换为WebRequest

en *_*pes 9 java spring spring-mvc spring-boot

我使用Spring Initializer,嵌入式Tomcat,Thymeleaf模板引擎和包作为可执行JAR文件生成了一个Spring Boot Web应用程序.

使用的技术:

Spring Boot 2.0.0.M6,Java 8,maven

我在这个课程中有一个这个方法

private Map<String, Object> getErrorAttributes(HttpServletRequest request,
                                                   boolean includeStackTrace) {

        RequestAttributes requestAttributes = new ServletRequestAttributes(request);
        return this.errorAttributes.getErrorAttributes(request, includeStackTrace)

    }
Run Code Online (Sandbox Code Playgroud)

但我不知道如何施展 javax.servlet.http HttpServletRequest org.springframework.web.context.request.WebRequest

The method getErrorAttributes(WebRequest, boolean) in the type ErrorAttributes is not applicable for the arguments (HttpServletRequest, 
     boolean)
Run Code Online (Sandbox Code Playgroud)

sha*_*zin 21

你不需要投HttpServletRequestWebRequest.您需要的是WebRequest在控制器方法中使用.

@GetMapping("/endpoint")
public .. endpont(HttpServletRequest request, WebRequest webRequest) {
    getErrorAttributes(request, webRequest, true);
}
Run Code Online (Sandbox Code Playgroud)

并改变你的getErrorAttributes方法

private Map<String, Object> getErrorAttributes(HttpServletRequest request, WebRequest webRequest,
                                               boolean includeStackTrace) {

    RequestAttributes requestAttributes = new ServletRequestAttributes(request);
    return this.errorAttributes.getErrorAttributes(webRequest, includeStackTrace)

}
Run Code Online (Sandbox Code Playgroud)

  • 您可以删除RequestAttributes requestAttributes = new ServletRequestAttributes(request); 以及来自getErrorAtributes的HttpServletRequest (2认同)