2013-03-21 82 views
0

如何使用JSF每5秒自動刷新一次div。我有一個id = statusBlock的div,我希望其中的狀態和評論每5秒自動更新一次,以便用戶自動獲取所有狀態更新而不刷新整個頁面。我搜索了stackoverflow站點,但找不到任何可以讓我使用JSF來做的事情。使用JSF自動刷新div

+0

http://stackoverflow.com/a/11228281/ 617373 – Daniel 2013-03-21 15:28:14

+0

[JSF的可能重複,定期刷新組件與ajax?](http://stackoverflow.com/questions/11228198/jsf-refresh-periodically-a-component-with-ajax) – Daniel 2013-03-21 15:29:18

回答

3

這可以通過使用setInterval JavaScript函數,使服務器一旦當呼叫來實現。

一個簡單但不那麼花哨的例子就是爲了使用戶無法更新由他的數據來執行隱藏UICommand /她:

<script type="text/javascript"> 
    setInterval(function() { 
     document.getElementById('myForm:btnLoadData').submit(); 
     }, 5*1000); 
</script> 

<h:panelGroup id="divData" layout="block"> 
    <!-- content... --> 
</h:panelGroup> 
<h:form id="myForm"> 
    <h:commandButton id="btnLoadData" value="Hidden" action="#{bean.loadData}" 
     style="display:none"> 
     <f:ajax execute="@form" render=":divData" /> 
    </h:commandButton> 
</h:form> 
+0

如果我不想使用隱藏的UICommand,如果我只想刷新'' – 2013-03-21 14:52:56

+1

您應該手動向服務器發送ajax請求,如[在此解釋](http://www.developer.com/java/web/article.php/10935_3870686_2/Inside-JSF-20s-阿賈克斯和-HTTP-GET-Support.htm)。請注意,'UICommand'很大程度上幫助你做這些事情。此外,您可以重複使用第三方庫來處理PrimeFaces這樣的工作(如@ RodrigoSasaki的回答中所述)。 – 2013-03-21 15:25:10

+0

我可以省略操作屬性。如果我刪除了'action =「#{bean.loadData}」'',它會導致任何問題嗎?它是否是mandatoyr? – 2013-03-21 23:39:52

1

您是否在使用任何組件庫,如Primefaces?

如果您可以使用輪詢組件。

這裏是一個展示鏈接舉例:http://www.primefaces.org/showcase/ui/poll.jsf

+1

在最新的帖子,OP問如果答案可以使用普通的JSF。 – 2013-03-21 14:26:30

+0

對不起@LuiggiMendoza,但什麼是OP? – 2013-03-21 14:42:27

+0

OP =原創海報。請參閱http://www.urbandictionary.com/define.php?term=op – 2013-03-21 14:43:02