如何解决Spring Boot 应用程序中的 Java 方法,它接收另一个方法的结果作为参数
我正在构建一个 Spring Boot 服务器。在我的控制器中,我将结果从 DAO 转换为 DTO,然后将它们放入 ResponseEntity。但是,我的服务中有 void 方法。
public function build()
{
return $this->from('hello@example.com')
->markdown('emails.coupons.created')
->subject('? Your discount')
->with([
'coupon' => $this->coupon,])
->withSwiftMessage(function ($message) {
$message->getHeaders()
->addTextHeader('X-PM-Message-Stream','notifications')
});
}
第一个接收参数并构建一个状态为 OK(200) 的 ResponseEntity,如果 T != null,则将 T 作为主体。秒类似,但使用 modelmapper 将 S 转换为 T,这意味着 DAO 到 DTO。我的问题是我可以进行任何修改或添加一些代码来实现这一点:
protected final <T> ResponseEntity<T> of(T param) {
if (param != null)
return status(HttpStatus.OK).body(param);
else
return status(status).build();
}
protected final <S,T> ResponseEntity<S> of(T param,Class<S> target) {
if (param != null)
return status(HttpStatus.OK).body(convert(param,target));
else
return status(status).build();
}
现在当我这样做时,它告诉我它不能将 void 转换为 T。
解决方法
如果您只是将返回类型替换为 ResponseEntity ,它应该可以工作。
public ResponseEntity test() {
return ok(service.test());
}
这也应该允许您在正文中返回 String 消息,即使它不是 T 类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。