2013-04-10 97 views
0

基本上,我想要實現使用Primefaces線圖,可以改變每隔一秒的網頁。jsf 2:如何使Primefaces線圖每隔1秒更改一次?

在我管理的bean,我得到的,說從我的數據庫100點的數據。我不想一次性填充折線圖,而是想像數據波一樣顯示它們,以便100秒內顯示這100個數據。

我如何能實現呢?

+0

您可以使用調查:使用http://www.primefaces.org/showcase/ui/poll.jsf – 2013-04-10 07:16:56

+0

Primefaces圖表有'在V3.2 live'屬性。 'live =「true」'會導致圖表每隔一段時間刷新一次。無法想象爲什麼他們刪除它 – kolossus 2013-04-10 12:48:59

回答

2

你應該從DB獲得100點的數據並將其存儲在一個列表讓的說主列表,並且應該有一個更將被刷新一次,一個第二和主列表的當前元素將被添加到第二個列表清單。 STH。這樣的:

@ManagedBean 
@ViewScoped 
public class DataBean { 

    private ArrayList<Data> mainList;//fill this from DB via seperate DAO class 
    private ArrayList<Data> viewList; 
    public int counter; 
    //getter and setters 
    public void refreshList() { 
     viewList.add(mainList.get(counter); 
     counter++; 
    } 
} 

,並在視圖層,你應該叫refreshList方法定期當然這可以通過p:pollp:remoteCommand來完成。 RemoteCommand需要通過JS代碼中調用一次以上,這是這樣的:

jQuery(document).ready(function() { 
    setInterval("updateChart", 1000);//every 1 sec 
}); 

這FUNC。將調用其命名爲updateChartp:remoteCommand

<p:remoteCommand name="updateChart" actionListener="#{dataBean.refreshList}" 
          update="myChart"/> 

myChart是你p:lineChart組件的客戶端ID,你必須給出確切的ID,就可以通過瀏覽器的開發者設置檢測到它。

並記住,這不是確切的實現可能會有錯誤,p:lineChart期望模型類,而不是arrayLists,我從來沒有使用圖表組件,但我假設系列類似於列表。希望這可以指導你。

+1

好的答案,他可能會使用輪詢最後一部分http://www.primefaces.org/showcase/ui/poll.jsf – 2013-04-10 08:34:44

+0

@SerkanArıkuşu謝謝。我有一些問題,有可能是P的'錯誤:poll'像[這裏](http://stackoverflow.com/questions/15903816/jsf-primefaces-social-network-notification-system-with-ppoll-推)。這就是爲什麼我提到'p:remoteCommand' – 2013-04-10 10:02:09

+0

@ÖmerFarukAlmalı謝謝你給我兩個選擇。 「poller」適用於我。 – Cacheing 2013-04-11 21:06:23