2011-09-13 92 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)。你也可以用彗星/氣氛圖書館做你自己的事情,但是自己看了一下,我可以告訴你,這些解決方案在你的方面將是很多工作,幾乎是一個自定義的實現。