在引用实际Web请求之外的请求属性时,如何避免IllegalStateException

时间:2013-10-06 13:25:45

标签: java spring spring-mvc

我正在制定一个解决方案,如果我正处于Web请求中,或者其他内容,那么应该采取一些措施。

我在做什么

@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);
}

1 个答案:

答案 0 :(得分:2)

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

  

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

     

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

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