2011-09-13 62 views
2

我在我的JSF应用程序中遇到线程问题,也许有人可以帮助我。如何从另一个线程更新GUI?

开始之后,我运行了新的线程,它正在进行一些后台操作。这个线程在while(true) -loop中工作,但是当没有任何东西时它可以调用wait()。它正在循环工作,因为我必须在用户执行一些操作后调用notify()

所以现在我想说的是:我希望线程通知主线程该部分工作已完成,因此我可以更新UI中的某些元素。有任何想法吗?

我也想显示的FacesMessage,但它是IMPOSIBLE到(即使使用Observer模式)

+0

记住观察者模式? :-) – Scorpion

+0

使用可以使用事件采购:http://martinfowler.com/eaaDev/EventSourcing.html 这是非常好的OO机制。 –

+0

您使用的是JSF 1.x还是2.x?你在使用像IceFaces/RichFaces/PrimeFaces这样的ajaxical组件库吗? – BalusC

回答

0

您可以使用JMS在您正在运行的线程和托管的bean之间进行通信,但其余部分则需要使用上述推送技术之一。

如果足够了,您可以使用primefaces轮询组件,否则与我现在知道的jsf一起工作的唯一推送技术是icefaces push。 Primefaces推出了一个新的基于websocket的推送组件,看起来它会非常好,但我不相信它会在几个月内完成(它出现在最新的快照中,但并不真正做了很多,只适用于jetty8)。你也可以用彗星/气氛图书馆做你自己的事情,但是自己看了一下,我可以告诉你,这些解决方案在你的方面将是很多工作,几乎是一个自定义的实现。