2011-03-03 126 views
0

我使用JSF/2.0和香草Mojarra。JSF組件的延遲渲染

我有一個客戶端列表在屏幕上加載,並在屏幕加載後10秒,我想把一個單獨的美元值旁邊的每個客戶端名稱。

我想擴展現有的JSF組件來做到這一點。什麼是最好的方法來做到這一點?

JG

回答

1

調用必須來自客戶端,因爲標準的HTTP協議不允許服務器端推東西的客戶端。從JavaScript的setTimeout()函數開始。

<script>setTimeout(functionName, 10000);</script> 

你可以使用普通的JS(甚至jQuery)來做這些改變。如果您需要調用JSF操作,請調用jsf.ajax.request()函數。

+0

jsf.ajax.request()是否可以執行bean方法?例如#{myBean.calculateDollarValues},之後他可以訪問更新的屬性。從文檔中看不出這個例子,這個例子告訴我執行實際上會觸發commandButton - 但事實並非如此。 – Toskan 2012-01-10 16:45:17

+0

@Toskan:只有當組件存在於視圖中,或者當您使用自定義組件時,它不會呈現任何內容,但會在decode()中考慮它。 – BalusC 2012-01-10 16:51:52

+0

啊...好吧。我明白,要執行一些你需要的組件(例如h:commandLink),它無論如何都會爲你做(不管怎樣hacky沒有渲染,隱藏或只是明顯可見)。但是,如何使用js函數jsf.ajax.request提交該commandLink? – Toskan 2012-01-10 17:08:26