【问题标题】:HttpServletRequest throws error when used within AspectHttpServletRequest 在 Aspect 中使用时抛出错误
【发布时间】:2021-06-01 21:01:01
【问题描述】:

我有一个方法,它有一个方面。当我尝试 @Autowire HttpServletRequest 并使用 request.getHeader(something) 时,我收到此错误 -

未找到线程绑定请求:您是指实际 Web 请求之外的请求属性,还是在原始接收线程之外处理请求?如果您实际上是在 Web 请求中操作并且仍然收到此消息,则您的代码可能在 DispatcherServlet 之外运行:在这种情况下,请使用 RequestContextListener 或 RequestContextFilter 来公开当前请求。

我该如何解决这个问题?我尝试使用 RequestContextHolder,但在调试时我仍然看到 null。当我的项目没有 web.xml 时如何使用 RequestContextListener。

【问题讨论】:

    标签: spring spring-boot servlets aspect spring-aspects


    【解决方案1】:

    Request Header 可以通过以下方式使用 HttpServletRequest 访问。

    private static HttpServletRequest getRequest() {
        return((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
    }
    
    public static String getApiTraceId() {
        return getRequest().getHeader(something);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2010-10-29
      • 2017-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多