在戴爾的一次採訪中,我被問到了這個問題。ajax如何以1秒的間隔更新組件?
new Date()
爲您提供了當前的日期/時間初始化的Date
對象。
讓想我的屏幕右上角顯示當前時間,和人做過這樣的。
<h:outputText value="#{bean.presentDateTime}" />
這將如何修改以始終顯示當前日期和時間?
在戴爾的一次採訪中,我被問到了這個問題。ajax如何以1秒的間隔更新組件?
new Date()
爲您提供了當前的日期/時間初始化的Date
對象。
讓想我的屏幕右上角顯示當前時間,和人做過這樣的。
<h:outputText value="#{bean.presentDateTime}" />
這將如何修改以始終顯示當前日期和時間?
基本上,你想打服務器,並在更新的時間間隔的結果。這被稱爲「輪詢」。標準的JSF沒有內置的工具,所以你仍然需要自己編寫一些JS代碼(或者理論上,抓住一個JSF組件,它可以透明地爲你呈現所需的JS代碼)。在JavaScript中,您可以使用setInterval()
來間隔執行一個函數。
所以,一旦你給時間戳組件固定ID,
<h:outputText id="presentDateTime" value="#{bean.presentDateTime}" />
和您提供的以下隱藏的形式,其命令按鈕Ajax的更新它,
<h:form id="hiddenForm" style="display:none">
<h:commandButton id="updatePresentDateTime">
<f:ajax render=":presentDateTime" />
</h:commandButton>
</h:form>
那麼你就可以得到它在DOM/window/body準備好的時候執行下面的腳本。
<script>
setInterval(function() {
document.getElementById("hiddenForm:updatePresentDateTime").click();
}, 1000);
</script>
不要在生產中用於這個目的(客戶端時鐘)。作爲對面試問題的回答(或者作爲some showcase page中的一個例子),這至多是可以的。在生產中,如果需要,結合以合理較長間隔運行的民意調查,可以更好地攫取「純粹」JS,例如, 1分鐘。或者如果您的環境支持它,請使用WS或SSE推送。
我幾乎每天都記得我承諾的東西。不幸的是,該項目目前缺貨。請不要有絲毫的懷疑。我一定會。並感謝你的答案。 –
所有在適當的時間。 – BalusC
將工作時鐘(工作在第二毫秒或更低範圍)同步到服務器肯定會導致服務器死機。它們在Web應用程序中不可取。 – Tiny
這肯定是個詭計問題。沒有JS,這是不可能的。請注意,ajax實際上使用JS。或者,對於「沒有JavaScript」的部分,實際上可能存在誤解/錯誤解釋的手段。 – BalusC
@BalusC:哦,是的!你做對了。沒有Javascript,我的意思是我需要使用部分頁面渲染,而不是純javascript。我編輯了標題。 –