2017-07-25 12 views
0

私はthisを見ましたが、今、この問題が発生しています。DeferredResult Empty Body

ResponseEntity<?>を返すようにコントローラを変更した場合、本体は正常に機能しますが、DeferredResult<ResponseEntity<?>>を返すと、ヘッダとステータスコードが返されますが応答ボディは返されません。

すべてのヘルプは大DeferredResult

答えて

0

使用は、単にコントローラの応答タイプを変更する問題ではありません理解されるであろう。 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); 
+0

うん、私たちは体を設定し、コールバックを持っています。レスポンスボディをチェーンのさらに下にはがすフィルターがありました。 – Alex