2013-04-11 121 views
1

我有一個Liferay portlet,我通過AJAX執行某些操作。當我在serverResource中處理這些操作時,我想強制所有客戶端進行渲染。我已經嘗試了一些東西,但它們似乎只適用於每個客戶端。我的意思是客戶端是我的網站上的用戶執行操作(即單擊按鈕以更改搜索容器中實體的狀態)。Liferay事件強制呈現

我試圖通過在實體更新時觸發事件來使用客戶端IPC。我在AJAX調用成功時觸發事件,但事件不會被我的另一個客戶端(第二個瀏覽器打開到同一頁面)捕獲,因此它不刷新,除非刷新頁面想做。

我看着配置發送者/接收者portlet(我的一個portlet是發送者和接收者),但看起來它需要我提交會導致我的頁面刷新的操作,所以不能使用它。我確實從processAction中調用了include,認爲它會觸發所有客戶端的呈現,但只對發出ajax請求的客戶端有效。

在這一點上,我沒有看到我如何強制所有的客戶端刷新,除非我設置像ajax輪詢例程,這可能是我唯一的路徑,但任何建議表示讚賞。

回答

1

JSR 286在服務器端IPC上標準化,屏幕上沒有單個Portlet的Ajax動態刷新。您必須讓自己的Portlet知道您將通過JS觸發的事件,並且不能依賴門戶容器中的任何(標準化)開箱即用功能。

AFAIK的serveResource不能觸發事件(但我沒有用加倍的規範檢查),如果有,事件肯定不會觸發通過Ajax任何渲染,而不自定義代碼,您的最終