Spring MVC:如何在ResponseEntity主体中返回不同的类型

在我的请求处理程序中,我想进行一些验证,并根据验证检查的结果返回不同的响应(成功/错误)。因此,我为响应对象创建了一个抽象类,并为失败案例和成功案例创建了2个子类。该代码看起来像这样,但无法编译,抱怨errorResponse和successResponse无法转换为AbstractResponse。

我对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);

}

回答:

这里有两个问题:

  • 您的返回类型必须更改为匹配两个响应子类 ResponseEntity<? extends AbstractResponse>
  • 实例化ResponseEntity时,不能使用简化的<>语法,而必须指定要使用的响应类 new ResponseEntity<ErrorResponse> (errResponse, HTTPStatus.BAD_REQUEST);
    @ResponseBody ResponseEntity<? extends AbstractResponse> createUser(@RequestBody String requestBody) {

    if(!valid(requestBody) {

    ErrorResponse errResponse = new ErrorResponse();

    //populate with error information

    return new ResponseEntity<ErrorResponse> (errResponse, HTTPStatus.BAD_REQUEST);

    }

    createUser();

    CreateUserSuccessResponse successResponse = new CreateUserSuccessResponse();

    // populate with more info

    return new ResponseEntity<CreateUserSuccessResponse> (successResponse, HTTPSatus.OK);

    }

以上是 Spring MVC:如何在ResponseEntity主体中返回不同的类型 的全部内容, 来源链接: utcz.com/qa/417437.html

回到顶部