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 一项民意调查“暂停”另一项民意调查的主要内容,如果未能解决你的问题,请参考以下文章
如何制作带选项的批处理。例如:选择y会执行一项命令,选择n会执行另一项命令