【问题标题】:jsf 2: how to make Primefaces line chart change every 1 second?jsf 2:如何让 Primefaces 折线图每 1 秒改变一次?
【发布时间】:2013-04-10 05:26:52
【问题描述】:

基本上,我想使用 Primefaces 折线图实现一个网页,该折线图可以每秒更改一次。

在我的托管 bean 中,我从我的数据库中获取了 100 个数据。与其一次性填充所有折线图,我想将它们显示为数据波,以便这 100 条数据可以在 100 秒内显示出来。

我该如何实现?

【问题讨论】:

  • 您可以使用投票:primefaces.org/showcase/ui/poll.jsf
  • Primefaces 图表过去在 v3.2 中具有 live 属性。 live="true" 会导致图表每隔一段时间刷新一次。无法想象他们为什么删除它

标签: ajax jsf-2 primefaces


【解决方案1】:

您应该从数据库中获取 100 个数据并将它们存储在一个列表中,比如说主列表,并且应该还有一个列表,每隔一秒刷新一次,主列表的当前元素将附加到第二个列表中。某事。像这样:

@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
});

还有这个功能。将调用名为updateChartp:remoteCommand

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

myChart 是您的p:lineChart 组件的客户端 ID,您必须提供准确的 ID,您可以通过浏览器的开发人员设置来检测它。

请记住,这不是可能存在错误的确切实现,p:lineChart 期望模型类而不是 arrayLists,我从未使用过图表组件,但我假设系列类似于列表。希望这可以指导你。

【讨论】:

  • 好答案,他可能会在最后一部分使用 poller primefaces.org/showcase/ui/poll.jsf
  • @SerkanArıkuşu 谢谢。我遇到了一些问题,可能存在p:poll 的错误,例如here。这就是我提到p:remoteCommand的原因
  • @ÖmerFarukAlmalı 谢谢你给我两个选择。 poller 适合我。
猜你喜欢
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-16
相关资源
最近更新 更多