【问题标题】:Observer pattern with JSF/PrimeFaces使用 JSF/PrimeFaces 的观察者模式
【发布时间】:2013-02-22 15:34:30
【问题描述】:

有没有推荐的在 JSF 中实现观察者模式的方法,即强制从 Java bean 更新 UI?

我看过 PrimePush,但他们的 ShowCase 示例似乎都不适用于我的浏览器(例如 FF 19.0),这就是我回避它的原因。

我目前正在使用 PrimeFaces 轮询定期更新各个组件。我正在考虑将轮询的间隔减少到“1”,并在服务器准备好推送之前阻止其操作方法。这是个好主意还是会在某个时候取消此类长时间运行的请求?

<p:poll interval="15" listener="#{fileBucket.keepAlive}" update=":download:files :expiryDateValue" oncomplete="updatePageIsValidForValue();" />

【问题讨论】:

  • 也许你遇到的问题是你是如何实现推送的。我已经在 Chrome、Firefox 和 IE 9 中测试过了。你用的是什么浏览器?
  • 感谢您的快速回复。我感兴趣的主要浏览器是 Firefox 19.0。我还没有在我的解决方案中实现 Push,我实际上是在谈论他们的展示示例。
  • 好吧,你可以在同一台机器的 Firefox 19 和 Chrome(或其他浏览器)中打开 FacesMessage example,然后从非 Firefox 浏览器发送消息,然后在 Firefox 中查看答案,它应该会给你预期的行为(我在发布此评论之前已经对其进行了测试)。顺便说一句,我正在使用 Firefox 19(直到现在我才意识到)
  • 刚刚用 Firefox 19.0 和 Google Chrome 25.0 测试过。该消息不会显示在任何一个浏览器窗口中(甚至不会显示在最初发送它的窗口中)。我也没有在 FireBug 控制台中收到任何错误消息。我应该注意哪些陷阱?
  • 我想我发现了 PrimePush 的问题。展示示例出于某种原因在端口 8080 上运行 PrimePush,这在我们的环境中被阻止。然后我将尝试实现我自己的主要推送示例。

标签: java jsf primefaces observer-pattern


【解决方案1】:

投票中的阻止操作基本上是手工推送,我建议不要这样做,你很可能会遇到很多问题。轮询更安全、更便携,但如果这还不够,您应该尝试现有的推送实现之一,例如 PrimePush。

【讨论】:

  • 谢谢!我已经尝试过 PrimePush,现在端口问题已经解决,虽然它在我的测试环境中运行良好,但我目前不会为了这一页而获得将其引入项目的许可。所以我会坚持投票方式。
猜你喜欢
  • 1970-01-01
  • 2016-02-20
  • 2023-04-10
  • 1970-01-01
  • 2013-03-05
  • 2013-01-01
  • 1970-01-01
  • 2013-02-12
  • 2016-05-11
相关资源
最近更新 更多