Java Spring 3.2延迟结果-如何设置错误响应的状态代码?

Java Spring 3.2延迟结果-如何设置错误响应的状态代码?,java,spring,spring-mvc,asynchronous,Java,Spring,Spring Mvc,Asynchronous,SpringWeb3.2附带了一个用于异步请求处理的DeferredResult类。它有一个setErrorResult,用于在出现问题时提供替代响应,但没有提供http错误代码的选项 当然,必须能够控制失败请求的http响应代码。。如何使用新的SpringAPI实现这一点 forsetErrorResult方法说明如下: 为DeferredResult设置错误值并进行处理。价值可能 是异常或可丢弃的,在这种情况下,它将被视为 处理程序引发了异常 我想,通过设置一个异常,可以触发一个异常处理程序

SpringWeb3.2附带了一个用于异步请求处理的
DeferredResult
类。它有一个
setErrorResult
,用于在出现问题时提供替代响应,但没有提供http错误代码的选项

当然,必须能够控制失败请求的http响应代码。。如何使用新的SpringAPI实现这一点

for
setErrorResult
方法说明如下:

为DeferredResult设置错误值并进行处理。价值可能 是异常或可丢弃的,在这种情况下,它将被视为 处理程序引发了异常

我想,通过设置一个
异常
,可以触发一个异常处理程序,返回所需的代码

deferredResult.setErrorResult(new Exception());
这将始终将HTTP响应代码设置为500。为了更好地控制,HttpServletResponse.setStatus似乎可以工作

这将有助于解决问题

public-DeferredResult-getMessages(@RequestParam int-requestedindex,
最终HttpServletResponse(响应){
最终递延结果递延结果=新递延结果();
延迟结果。完成(…);
deferredResult.onTimeout(新的Runnable(){
@凌驾
公开募捐{
setErrorResult(“此处有解释”);
response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);//或SC_NO_CONTENT
}
});
longPollRequests.put(延迟结果、请求索引);
返回延迟结果;
}

作为参数传递给
setErrorResult
的异常可以是 用
@ResponseStatus
注释。e、 g.创建自己的异常类:

  @ResponseStatus(HttpStatus.NOT_FOUND)
  class NotFoundException extends RuntimeException {
     // add your own constructors to set the error message
     // and/or cause. See RuntimeException for valid ctors 
  }
然后在代码中与您创建的构造函数一起使用,例如:
  deferredResult.setErrorResult(new NotFoundException(reason, cause));
  deferredResult.setErrorResult(new NotFoundException(reason, cause));