3

我正在研究一个解决方案,如果我在一个网络请求的中间,应该做一些事情,或者如果不是,我应该做一些别的事情。

我正在做的是

@Autowired private HttpServletRequest request;

然后尝试访问一个变量:

request.getRequestURI()

但我得到java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request...

我想避免例外,并以某种方式询问HttpServletRequest天气是否我在网络请求中。

有什么办法吗?

示例: 附加信息:

@Override
public void trace(String msg) { 
    if (loggerFactory.isRegisteredUrl(request.getRequestURI())){
        loggerFactory.getCustomeLogger(request.getRequestURI()).trace(msg);
        return;
    }
    nativelogger.trace(msg);
}
4

1 回答 1

2

您可能应该(未经测试)使用RequestContextHolder.getRequestAttributes()

返回当前绑定到线程的 RequestAttributes。

返回: 当前绑定到线程的 RequestAttributes,如果没有绑定则返回 null

因此,如果该方法返回 null,则当前线程未处理请求。如果它返回一个非空值,它正在处理一个。

于 2013-10-06T13:50:10.887 回答