java - Play Framework - 在 X 秒后进行处理/重定向时呈现 View

标签 java asynchronous playframework routes playframework-2.0

注意:本人初玩框架

为了我的游戏!项目,我需要某种形式的异步编程。简单地说,我需要显示一个 View ,同时在后台进行处理,然后进行重定向或呈现新表单。

question被问到没有回应。我查看了 Play 文档页面,但没有找到任何解决方案。

我尝试过的:

我试图修改 play starter example 中提供的 AsynchController。然而,当导航到 http://localhost/message 时,该函数似乎更像是一个 sleep 而不是一个被设置和“忘记”的计划任务,即可以继续进一步编码.

AsynchController 片段: 有自己的修改

public CompletionStage<Result> message() {
        return getFutureMessage(5, TimeUnit.SECONDS).thenApplyAsync(s -> ok(views.html.User.Account.verified.render()), exec);
    }

    private CompletionStage<String> getFutureMessage(long time, TimeUnit timeUnit) {
        CompletableFuture<String> future = new CompletableFuture<>();
        actorSystem.scheduler().scheduleOnce(
            Duration.create(time, timeUnit),
            () -> future.complete("Waiting 5 seconds..."),
            exec
        );
        return future;
    }

路线入口

GET     /message                 controllers.AsyncController.message

目的:

我的目标是显示消息 Waiting 5 seconds...,然后延迟 +/- 5s。此后它将到达“ future ”(这是正确的吗?),由此它将呈现一个 View (或重定向到 Controller ),在本例中为 verified 页面(用于帐户已验证)。

我的最初目标是否在正确的轨道上,我在哪里可以找到类似的好例子?

最佳答案

我有一个简单的解决方案,但你必须在路由中设置 2 个条目。

第一个条目显示消息“等待 5 秒...”,同时它向第二个条目发出 AJAX 调用。第二个条目的 Controller 进行计算/hibernate 5 秒,并返回所需的内容,该内容将由 Javascript 呈现在第一页上。

在第一个网页中,您可以放置​​如下内容:

  axios.get(second-url)
      .then(function (response) {
        document.getElementById(someplaceholder).innerHTML=response.data.
      })

关于java - Play Framework - 在 X 秒后进行处理/重定向时呈现 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45153335/

相关文章:

javascript - For 循环立即打印所有循环的 console.log() ,而循环的其余部分仍然运行?

java - 使用少量线程并发发送大量 HTTP 请求

java - 使用 Play 框架和 Java 进行缓存

java - 如何使用 GWT 2.1 数据表示小部件

java - 没有shade插件怎么打包Dropwizard项目?

java - jdk 1.4、1.5、1.6编译代码差异

java - 玩java 2.5 guice急切加载并停止钩子(Hook)不工作

java - JSP Javabean 生成错误

Silverlight 服务 codegen 只创建异步函数调用? (SLsvcUtil.exe)

playframework - GZIP Play Framework 2.0 中的响应主体