问题描述
我有一个方法,它有一个方面。当我尝试@Autowire HttpServletRequest 并使用 request.getHeader(something) 时,出现此错误 -
未找到线程绑定请求:您是指实际 Web 请求之外的请求属性,还是在原始接收线程之外处理请求?如果您实际上是在 Web 请求中操作并且仍然收到此消息,则您的代码可能在 dispatcherServlet 之外运行:在这种情况下,请使用 RequestContextListener 或 RequestContextFilter 来公开当前请求。
我该如何解决这个问题?我尝试使用 RequestContextHolder,但在调试时我仍然看到 null。当我的项目没有 web.xml 时,如何使用 RequestContextListener。
解决方法
可以通过以下方式使用 HttpServletRequest 访问请求头。
private static HttpServletRequest getRequest() {
return((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
}
public static String getApiTraceId() {
return getRequest().getHeader(something);
}