我有一个 JSF 站点,由于渲染的数据量较大,某些数据项需要一段时间才能显示。
我知道如何在执行操作或 AJAX 时使用 BlockUI 之类的按钮单击来显示等待消息。
但是,当我直接输入 URL 并转到该页面时,我无法弄清楚如何触发类似的操作。当我使用 onload 或 onready 事件时,它在显示页面之前几乎不会闪烁消息。
有什么想法吗?
最佳答案
因为您没有提供任何有关您的代码
When I use onload or onready events it barely flashes the message right before displaying the page.
我认为您做得正确。这个解决方案怎么样?服务器在支持 bean 中执行一些处理,而客户端查询服务器“是否完成”?
服务器端:
@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" />
引用文献
关于jquery - 在呈现 JSF 页面时显示加载/启动屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16932393/