基本上,我想要实现使用Primefaces线图,可以改变每隔一秒的网页。jsf 2:如何使Primefaces线图每隔1秒更改一次?
在我管理的bean,我得到的,说从我的数据库100点的数据。我不想一次性填充折线图,而是想像数据波一样显示它们,以便100秒内显示这100个数据。
我如何能实现呢?
基本上,我想要实现使用Primefaces线图,可以改变每隔一秒的网页。jsf 2:如何使Primefaces线图每隔1秒更改一次?
在我管理的bean,我得到的,说从我的数据库100点的数据。我不想一次性填充折线图,而是想像数据波一样显示它们,以便100秒内显示这100个数据。
我如何能实现呢?
你应该从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:poll
或p:remoteCommand
来完成。 RemoteCommand需要通过JS代码中调用一次以上,这是这样的:
jQuery(document).ready(function() {
setInterval("updateChart", 1000);//every 1 sec
});
这FUNC。将调用其命名为updateChart
的p:remoteCommand
:
<p:remoteCommand name="updateChart" actionListener="#{dataBean.refreshList}"
update="myChart"/>
myChart
是你p:lineChart
组件的客户端ID,你必须给出确切的ID,就可以通过浏览器的开发者设置检测到它。
并记住,这不是确切的实现可能会有错误,p:lineChart
期望模型类,而不是arrayLists,我从来没有使用图表组件,但我假设系列类似于列表。希望这可以指导你。
好的答案,他可能会使用轮询最后一部分http://www.primefaces.org/showcase/ui/poll.jsf – 2013-04-10 08:34:44
@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
@ÖmerFarukAlmalı谢谢你给我两个选择。 “poller”适用于我。 – Cacheing 2013-04-11 21:06:23
您可以使用调查:使用http://www.primefaces.org/showcase/ui/poll.jsf – 2013-04-10 07:16:56
Primefaces图表有'在V3.2 live'属性。 'live =“true”'会导致图表每隔一段时间刷新一次。无法想象为什么他们删除它 – kolossus 2013-04-10 12:48:59