Spring Web 3.2帶有用於異步請求處理的DeferredResult
類。它有一個setErrorResult
提供一個替代響應,如果出現問題,但沒有選項提供一個http錯誤代碼。Spring 3.2 DeferredResult - 如何設置錯誤響應的狀態碼?
當然,必須可以控制失敗請求的http響應代碼。我該如何使用新的Spring api?
Spring Web 3.2帶有用於異步請求處理的DeferredResult
類。它有一個setErrorResult
提供一個替代響應,如果出現問題,但沒有選項提供一個http錯誤代碼。Spring 3.2 DeferredResult - 如何設置錯誤響應的狀態碼?
當然,必須可以控制失敗請求的http響應代碼。我該如何使用新的Spring api?
的doc爲setErrorResult
方法表示如下:
設置錯誤的DeferredResult價值和處理。值可能是 是異常或Throwable,在這種情況下,它將被處理,就好像 處理程序引發異常。
我想通過設置一個Exception
,你可能會觸發一個異常處理程序,返回你想要的代碼。
deferredResult.setErrorResult(new Exception());
這將始終是HTTP響應代碼設置爲500。要精確控制HttpServletResponse.setStatus似乎工作。
這將與user411180's client side一起使用。
public DeferredResult<List<Point>> getMessages(@RequestParam int reqestedIndex,
final HttpServletResponse response) {
final DeferredResult<List<Point>> deferredResult = new DeferredResult<>();
deferredResult.onCompletion(...);
deferredResult.onTimeout(new Runnable() {
@Override
public void run() {
deferredResult.setErrorResult("Explanation goes here.");
response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); //or SC_NO_CONTENT
}
});
longPollRequests.put(deferredResult, reqestedIndex);
return deferredResult;
}