3
我有一个JSF网站,其中一些数据项需要一段时间才能显示,因为正在渲染的数据量很大。正在呈现JSF页面时显示加载/启动画面?
我知道如何在按钮点击时使用像BlockUI这样的东西,以在执行动作或AJAX时显示等待消息。
但是,我无法弄清楚如何直接键入URL并转到页面时如何触发相似的东西。当我使用onload或onready事件时,在显示页面之前几乎没有闪烁消息。
任何想法?
我有一个JSF网站,其中一些数据项需要一段时间才能显示,因为正在渲染的数据量很大。正在呈现JSF页面时显示加载/启动画面?
我知道如何在按钮点击时使用像BlockUI这样的东西,以在执行动作或AJAX时显示等待消息。
但是,我无法弄清楚如何直接键入URL并转到页面时如何触发相似的东西。当我使用onload或onready事件时,在显示页面之前几乎没有闪烁消息。
任何想法?
因为你没有向客户提供任何代码的
When I use onload or onready events it barely flashes the message right before displaying the page.
我认为你正确地做到了。这个解决方案呢?服务器在后台bean中执行一些处理,而客户端查询服务器'他是否完成'?
Serverside集团:
@YourScope (> @RequestScope)
@ManagedBean
public class MyBean {
private boolean renderDone = false;
@PostConstruct
public void renderLotOfData() {
renderDone = false;
// do something which takes a long time here
renderDone = true;
}
public boolean isRenderDone() {
return this.renderDone;
}
}
客户方:
showMySplash(); // initial call
function renderDoneBlockUi() {
var renderDone = $('#renderDone').val();
if (renderDone) {
hideMySplash();
} else {
setTimeout(checkRenderDone, 1000);
}
}
<h:inputHidden value="#{myBean.renderDone}" id="renderDone" />
<p:remoteCommand name="checkRenderDone" update="renderDone" actionListener="#{myBean.renderDone}" autoRun="true" oncomplete="renderDoneBlockUi" />
参考