Primefaces 一项民意调查“暂停”另一项民意调查

Posted

技术标签:

【中文标题】Primefaces 一项民意调查“暂停”另一项民意调查【英文标题】:Primefaces one poll "pause" another poll 【发布时间】:2018-08-06 13:25:44 【问题描述】:

我在同一页面中有两个 primefaces 民意调查。

其中一个 (pollLg) 的间隔时间较长(30 秒),而另一个 (pollSm) 的间隔时间较短(8 秒)。

pollLg 启动时,我希望pollSm “暂停”,然后在pollLg 完成任务后继续(记住它被中断的时间)。

如果我在pollLg 任务中调用PF('pollSm').stop()PF('pollSm').start(),则pollSm 将在8 秒后再次执行。

例如,当网页打开时,我有:

pollSm executions: 8sec, 16sec, 24sec (pollLg will execute here and stop pollSm)

pollLg 结束时,pollSm 只会在 8 秒后执行,而不是 2 秒(它被中断了 6 秒)

有什么简单的方法可以做到这一点吗?

【问题讨论】:

"有什么简单的方法可以做到这一点吗?" 定义'easy'...这个组件的javascript源是开放的,可以用一个相当简单的(或者至少不太复杂)方式。实际上,这与进行两次民意调查无关。手动停止/启动也是如此。民意调查只需要“记住”事情。 @Kukeltje 好吧,简单的是一个已经存在的函数,比如 PF('poll').pause() 或相关的东西。所以,我想我需要修改组件的源代码? 【参考方案1】:

首先让我声明 PrimeFaces 源是开放的,并且可以很容易地用于检查(可能是未记录的)功能。我做到了,并注意到您不能在 PrimeFaces 中轻松做到这一点,因为它的投票组件具有内置功能。在javascipt source of the component 中,您可以看到它使用普通的javascript 计时器。

所以我开始搜索你是否可以用普通的 javascript 轻松地做到这一点,并注意到那里也没有简单的功能。幸运的是,*** 中有一个关于 javascript 中 pausing/resuming a timer 的现有 Q/A,它甚至有一个答案 that is about repeating timers。

如果你把它和overriding (or extending) PrimeFaces widgets结合起来,你就可以实现你想要的。

【讨论】:

也有人说它可能不是一个糟糕的功能请求 p:poll 让 stop() 方法跟踪它停止的位置,如果有人想要,向小部件添加一个新的 resume() 方法恢复()。 start() 方法仍然会重新启动计时器。 谢谢!我意识到我可以在不实际“暂停”投票的情况下做到这一点。不过,我肯定会尝试将它与 Primefaces 小部件结合起来。

以上是关于Primefaces 一项民意调查“暂停”另一项民意调查的主要内容,如果未能解决你的问题,请参考以下文章

3视图和模板

无法阻止Primefaces民意调查

如何制作带选项的批处理。例如:选择y会执行一项命令,选择n会执行另一项命令

调查显示13%的瑞士年轻人未来看好数字货币 – AIDC每日资讯

防止发布没有选择的民意调查

R语言对苏格兰独立民意调查的Meta分析