spring-boot - 无法从 Retrofit 回调返回 CompletableFuture.completedFuture
问题描述
弹簧靴2.2改装2
我需要创建异步 http 请求。并在返回结果重定向到redirect:/cart
她是我的控制器:
@Autowired
private OrderService orderService;
@PostMapping(value = "/productEntry")
public String submitProductEntry(ProductEntry productEntry, Model model) {
try {
orderService.addProductToCart(productEntry);
} catch (InterruptedException e) {
logger.error(e);
}
return "redirect:/cart";
}
这是我的服务:
@Service
public class OrderService {
private static Logger logger = LogManager.getLogger(OrderService.class);
@Async
public CompletableFuture<Cart> addProductToCart(ProductEntry productEntry) throws InterruptedException {
logger.info("addProductToCart: productEntry = " + productEntry);
TransportService.addProductToCart(productEntry, new DefaultRestClientCallback<JsonElement>() {
@Override
public void onSuccess(Response<JsonElement> response) {
//super.onSuccess(response);
JsonElement responseJson = response.body();
logger.info("addProductToCart: onSuccess: responseJson = " + responseJson);
Cart cart = GsonUtil.gson.fromJson(responseJson, Cart.class);
logger.info("addProductToCart: cart = " + cart);
return CompletableFuture.completedFuture(cart);
}
@Override
public void onError(ErrorResponse errorResponse) {
//super.onError(errorResponse);
logger.error("addProductToCart: error = " + errorResponse);
}
});
}
}
这里是我的传输层:
public static void addProductToCart(ProductEntry productEntry, Callback<JsonElement> callback ) {
JsonObject json = new JsonObject();
json.addProperty("product", GsonUtil.gson.toJson(productEntry.getProduct()));
json.addProperty("quantity",
logger.info("addProductToCart: json = " + json);
Call<JsonElement> call = restClient.addProductToCart(ORDER_CART_ADD_PRODUCT, json);
// asynchronously
call.enqueue(callback);
}
方法onSuccess
(回调方法)成功后调用execute方法addProductToCart
但我在这一行得到编译错误:
return CompletableFuture.completedFuture(cart);
错误:
Cannot return a value from a method with void result type
解决方案
推荐阅读
- video - 需要对具有过层的视频项目的帮助
- drupal - 如何使用用户 ID 是自定义 Web 表单字段的视图查看匿名用户的用户特定内容?
- html - 如何将较小的 div 的边框底部放在另一个较大的 div 的边框底部之上?
- javascript - 如何使用 Google Identity API 退出?
- pandas - 数据框中的任何函数/属性类似于属性“删除”或“弹出”
- jmeter - JMeter 查询 - 不同的用户对相同的 HTTP 请求使用不同的文件位置
- java - Java:如何摆脱使用 spring fox 创建的 swagger UI 中的模型类?
- java - 需要制作验证代码并生成注释中显示的输出的类
- python - 将数据从 MSSQL 数据库导入二维数组
- java - Vaadin 14 组件未显示/不可见