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" />
參考