如果再 tapestry 中想實現頁面數據共享,那麼可以採用 SSO , SSO 主要用 @SessionState 進行描述 。
SessionState的創建與消除:
http://blog.csdn.net/logyina/article/details/5970984
最近參與使用T5框架的項目,在開發過程中,發現在同一個瀏覽器中打開多個頁籤時,經常是當前頁面中,會顯示另一個頁籤中的數據。顯示出來的數據還好,看見了就知道是有問題,可有時是隱藏的數據發生了改變。
後面經查證是@SessionState標註導致。
原因是在好多的頁面類文件中使用到了BoeBase對象。如下:
@SessionState
private BoeBase boeBase;
開發時,爲了將上一頁面數據傳到下一頁面,就使用了SesseionState註解。使用了這個比再次去數據庫查詢的確是快了許多。所以在項目是大量使用了。
可交與客戶之後,他們的使用時經常開多個頁籤。數據是各種串,在頁面上提交之後,數據亂得沒法使用。查問題怎麼也查不出來。
解決方法就是,能不用@SessionState的就去掉,改爲@Persist 。當頁面加載時去數據庫查詢
@Persist
private BoeBase boeBase;
注意此處不能改爲:
private BoeBase boeBase;
這樣也是會串數據。