私のリクエストハンドラでは、いくつかの検証を行い、検証チェックの結果に基づいて別の応答(成功/エラー)を返します。そこで、レスポンスオブジェクトの抽象クラスを作成し、失敗の場合と成功した場合の2つのサブクラスを作成します。コードはこのように見えますが、errorResponseとsuccessResponseをAbstractResponseに変換できないと不平を言ってコンパイルしません。Spring MVC:ResponseEntity本体で異なる型を返す方法
私はJava GenericとSpring MVCの新機能を使いこなすので、これを解決する簡単な方法はわかりません。
@ResponseBody ResponseEntity<AbstractResponse> createUser(@RequestBody String requestBody) {
if(!valid(requestBody) {
ErrorResponse errResponse = new ErrorResponse();
//populate with error information
return new ResponseEntity<> (errResponse, HTTPStatus.BAD_REQUEST);
}
createUser();
CreateUserSuccessResponse successResponse = new CreateUserSuccessResponse();
// populate with more info
return new ResponseEntity<> (successResponse, HTTPSatus.OK);
}
'CreateUserSuccessResponse'は' AbstractResponse'を拡張しますか? –
はい、CreateUserSuccessResponseとErrorResponseの両方がAbstractResponseを拡張しています。 – dnang