微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HttpServletRequest 在 Aspect 中使用时抛出错误

如何解决HttpServletRequest 在 Aspect 中使用时抛出错误

我有一个方法,它有一个方面。当我尝试@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);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。