使用 vaadin 在异步方法中调用 restController
Call restController in asynchronous method with vaadin
当我想从线程中触发 RestController 时,我遇到了一些问题。我正在尝试从我的线程向 RestController 发送请求,但是当我的 restTemplate 正在执行目标 URL 时,我没有从控制器收到任何响应。 RestController 甚至没有执行。仅当我从 ui.access->rest.sendRequest()
发送请求时它才按预期工作,但无论如何我的应用程序都必须等待请求结束。
我正在使用 Vaadin 14。我使用 运行 方法创建了一个线程,如下所示:
CompletableFuture<Long> nonBlocking = CompletableFuture.supplyAsync(() -> restTemp.getForObject("http://localhost:4240/Servis/api/address",
Long.class));
nonBlocking.thenAccept(s -> {
if (s != null) {
ui.access(() -> Notification.open("long is not null"));
} else {
ui.access(() -> Notification.open("long is null"));
}
});
nonBlocking.get();
但是我的来自rest controller的代码仍然没有执行。
当我用 WebClient 替换 RestTemplate 时,我让它按预期工作
当我想从线程中触发 RestController 时,我遇到了一些问题。我正在尝试从我的线程向 RestController 发送请求,但是当我的 restTemplate 正在执行目标 URL 时,我没有从控制器收到任何响应。 RestController 甚至没有执行。仅当我从 ui.access->rest.sendRequest()
发送请求时它才按预期工作,但无论如何我的应用程序都必须等待请求结束。
我正在使用 Vaadin 14。我使用 运行 方法创建了一个线程,如下所示:
CompletableFuture<Long> nonBlocking = CompletableFuture.supplyAsync(() -> restTemp.getForObject("http://localhost:4240/Servis/api/address",
Long.class));
nonBlocking.thenAccept(s -> {
if (s != null) {
ui.access(() -> Notification.open("long is not null"));
} else {
ui.access(() -> Notification.open("long is null"));
}
});
nonBlocking.get();
但是我的来自rest controller的代码仍然没有执行。
当我用 WebClient 替换 RestTemplate 时,我让它按预期工作