2013-04-10 116 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