从 HttpServletRequest 到 WebRequest 的 Casting

2022-09-03 12:20:10

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

使用的技术:

Spring Boot 2.0.0.M6 , Java 8, maven

我在1个类中有这种方法

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

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

    }

但我不知道如何从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)

答案 1

您不需要强制转换为 。您需要的是在您的控制器方法中使用。HttpServletRequestWebRequestWebRequest

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

并改变你的方法getErrorAttributes

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

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

}

答案 2

推荐