2013-02-01 112 views

回答

7

docsetErrorResult方法表示如下:

設置錯誤的DeferredResult價值和處理。值可能是 是異常或Throwable,在這種情況下,它將被處理,就好像 處理程序引發異常。

我想通過設置一個Exception,你可能會觸發一個異常處理程序,返回你想要的代碼。

1
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; 
} 
相關問題