2015-03-31 32 views
0

我們有這個XPages應用程序,它有一個母版頁(比如M.xsp)和幾個子頁面,所有這些頁面都在母版頁的單獨的iframe中(在單獨的標籤頁中作爲A.xsp,B.xsp和C.xsp加載) 。一般來說,應用程序運行良好。每個子頁面不應該干擾其他頁面,據我所知,它不會。一些與頁面相關的數據存儲在viewScope變量中,但是對於我們開發Managed Beans最重要的部分,他們的數據大部分都在視圖範圍內。現在XPages:beforePageLoad運行多次...爲什麼?

,我們看到的是以下內容:

  1. 網頁A上,做幾次點擊和一些AJAX調用發生時,我們從服務器
  2. 我們切換到B頁面獲取數據,我們做3 AJAX請求數據到服務器
  3. 我們切換回頁面A,我們只需點擊一次即可獲取一些數據,併發生beforePageLoad事件!不用說,該頁面仍然被加載。
  4. A,我們做了一個新的點擊來獲取不同的數據,beforePageLoad被再次觸發!

viewScope丟失,我的頁面依賴bean丟失,很奇怪。

我們檢查了一下,但是改變專用於XPage的內存量並沒有改變任何東西。

XPages 9.0.1,僅限瀏覽器。

有人可以解釋這種行爲:怎麼beforePageLoad重複執行?我們如何防止它?

謝謝!

+0

我認爲我的問題是關係到http://stackoverflow.com/questions/25304249/xpage-looses-session-when-opened-in-multiple-tabs:頁面A和它的所有內存似乎完全消失。進一步調查... – 2015-04-01 23:14:57

回答

0

Twas確實與內存中的最大頁數有關。每次單擊頁面B上列表中的項目時,都會使用以項目爲參數的URL將子頁面(B1)加載到另一個iframe中。列表中的許多點擊強制加載多個頁面,導致所有其他頁面從內存中消失。所以當我們回到頁面A並觸發了一些局部刷新時,就好像該頁面對運行時環境來說是新的。

我重寫了子頁面B2以留在內存中,並在列表值更改時自行進行部分刷新。快得多,並且沒有不必要的頁面掉落。