Tapestry 會話緩存(@SessionState )導致串數據問題處理

如果再 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;

這樣也是會串數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章