DeferredResult Empty Body

时间:2017-07-25 15:25:59

标签: spring spring-mvc

我已经看过this,但我现在遇到了这个问题。

如果我更改我的控制器以返回ResponseEntity<?>,则身体会很好,但如果它返回DeferredResult<ResponseEntity<?>>,那么我会得到我的标题和状态代码,但没有响应正文。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

使用DeferredResult不仅仅是改变控制器的响应类型。返回DeferredResult的控制器可能会将请求的处理委托给线程池(或某些异步机制),而实际执行请求的任何操作都必须在DeferredResult上设置响应。像这样:

在控制器中:

DeferredResult deferredResult = new DeferredResult<>();

// pass deferredResult into a runnable task (or something similar) 
// which is scheduled for execution via a thread pool (or something similar)

return deferredResult;

在代表控制器执行请求的任务中:

// do some work
// ...
deferredResult.setResponse(responseBody);