如何编写带有播放框架的加载页面

6 java playframework

我想实现一个在运行系统命令时向用户显示的页面.一旦命令完成,用户应该被路由到另一个页面.

有哪些策略可以实现这一目标?

(没有javascript的解决方案将是理想的)

maa*_*cls 4

绝对可以做到。您想查看文档中的HTTP 异步编程,它解释了如何以非阻塞方式执行此操作。不过,您将需要一点 javascript 来完成重定向部分。

我不知道“系统命令”是什么意思,但您可能想为其创建一个作业,这样您就可以通过请求触发它。然后您可以轮询它直到完成,然后重定向用户。但事实上,文档在解释它方面比我现在所做的要好得多。

这是一个控制器操作的示例,我假设您的系统命令为用户返回某种字符串输出。当作业完成时,它将向用户发送响应,从而触发 javascript 示例中的成功处理程序。

public static void executeSystemCommand(String input) {
    Promise<String> outputPromise = new SystemCommandJob(input).now();
    String output = await(outputPromise);
    renderText(output);
}
Run Code Online (Sandbox Code Playgroud)

基本上,如果您使用 jQuery,$.ajax您可以使用complete事件来轮询数据(如果在超时时间内未成功,只需再次执行请求),并在应用程序响应时使用success/done 事件重定向用户表明“系统命令”已完成运行。

您可以使用的函数示例:

function poll(){
    $.ajax({ 
        url: "/systemcommand", 
        success: function(data){
            // redirect to next page here
            document.location.href = '/output'
        }, 
        complete: poll, 
        timeout: 20000  
    });
};
Run Code Online (Sandbox Code Playgroud)

StackOverflow 上还有一个关于javascript长轮询的很好的例子。