GWT – 在加载文件之前进行简单加载屏幕的最简单方法

单击按钮时,我的GWT应用程序返回嵌入在HTML页面中的PDF文件,如下所示:

     

问题是服务器创建这个PDF文件可能需要一段时间,所以我想要的是一个带有加载动画的等待屏幕,可以在后台下载PDF文件,然后在文件完成后显示页面如上所述。

一种显而易见的方法是显示加载页面,向服务器发送异步命令,然后一旦调用onSucceed方法,就像正常一样调用页面。 下行是我必须添加一些服务器端逻辑,以使PDF创建在后台工作…

有没有办法用GWT API做客户端?

您是否看到此stackoverflow问题检测浏览器何时收到文件下载 ? 基本上给出的答案是您在返回响应中设置cookie并在客户端等待设置此cookie。 这可以通过GWT轻松完成,因为它具有调度程序(用于重复计时器检查)并且可以轻松访问Cookie。 您仍需要进行一些服务器更改,但不必创建后台进程。

我没有完整的答案,但下面的代码在Safari中适用于我,也许你可以修改它,使它也适用于其他浏览器(?):

     
Loading...

这是纯JavaScript – 但也可以用GWT完成。 请注意,我使用iframe而不是嵌入,因为embed并不真正支持onload方法(并且embed不是标准的HTML元素,据我记得)。

为什么这可能不是完整答案的原因是Chrome在PDF开始下载后立即触发onload事件(但是在服务器端生成PDF之后)。 我不确定,如果这是你想要的?