我正在GWT中创建一个报告下载表单。下载报告文档需要2-3分钟,我在新选项卡中打开它,但新选项卡是空白的,等待服务器响应。现在我想显示一些自定义消息,如“文件正在下载,不要关闭此选项卡”。如何在GWT中做到这一点?我当前的代码如下面打开空白页面的URL ..
FormPanel m_downloadForm = new FormPanel();
m_downloadForm.setMethod(FormPanel.METHOD_POST);
m_downloadForm.setAction(url);
m_downloadForm.getElement().<FormElement>cast().setTarget("_blank");
Hidden h = new Hidden();
h.setName("OkBtn" );
h.setID( "OkBtn" );
h.setValue("Create Report");
m_downloadForm.add(h);
m_rootContent.add(m_downloadForm);
此代码打开新选项卡,没有成功的消息,正在下载文档。我想在新标签上显示一些消息。
您需要使用另一个线程进行下载。您的程序目前只使用一个线程。这意味着您的程序按顺序运行。它需要在执行任何其他操作之前完成执行正在执行的任何操作。拥有多个线程可以并行执行任务。
您正在使用本机浏览器方法打开报告:通过表单将URL发送到新的浏览器窗口。从那时起,您无法控制所显示的内容以及用户期望的管理方式。
你可以做的是创建一个小的GWT包装页面,里面有一个Frame。在该框架内,您将加载用户请求的报告。包装器GWT页面显示信息屏幕,通知用户他们需要耐心等待。然后它检查报告是否/何时实际完成下载/渲染,并且在这种情况下移除信息屏幕以使帧实际上是全屏的。
您是否正在尝试加载PDF并且您想要浏览器pdf查看器?或者常规html并使用(i)Frame?这个page讨论了如何检查Frame是否完成加载/渲染。
这可能会有很多试验和错误。