頁面跳轉後查詢狀態保存問題的解決(較爲笨拙的方法)

問題描述:頁面查詢時,在當前頁面A輸入查詢條件之後,跳轉至另一個頁面B,當重新點擊頁面A時,輸入的查詢條件和查詢結果均被初始化,需要重新輸入查詢條件,用戶體驗不好

項目框架:SpringMVC

項目結構:上部導航欄中每一個tab對應一個controller,當點擊tab時,此時就會重新加載頁面,頁面被初始化,查詢條件被清空

思考過和使用過的解決辦法:

1、將上述7個模塊放在同一個頁面中,點擊對應模塊出現對應頁面

問題:此時需要將7個模塊的代碼放置在同一個controller中,代碼冗餘量增大

         jsp頁面代碼量較大,對於代碼的修改將是一件令人頭痛的事情

          由於框架的限制,點擊分頁時,將會出現一次點擊控制多個頁面的頁碼變化(體驗不好)

2、多個iframe疊加,點擊一個tab顯示對應頁面,置頂於其他頁面

問題:此時頁面與頁面還是處於隔離狀態,無法在一個頁面中保存另一個頁面的查詢狀態

3、Spring Cache緩存技術,將每個頁面的查詢狀態保存在緩存中,當再到此頁面時,查詢是否存在查詢狀態,有則顯示

問題:Spring緩存是方法級別的緩存,(一篇很好的緩存文章:註釋驅動的 Spring cache 緩存介紹),文章中提到在方法上添加註解,可以將方法中的參數作爲key,方法的返回結果作爲value保存在緩存中;我的問題在於,我的方法返回結果是SpringMVC中的view路徑,而我想要緩存的是從前臺頁面傳回來的查詢參數


4、頁面緩存--H5 localStorage 

問題:localStorage是緩存在本地,當瀏覽器關閉時同樣存在,啓動瀏覽器時,上次的查詢狀態同樣會顯示

           我並不需要它存留很長時間,所以緩存在本地是不能滿足要求的

          小技巧:瀏覽器工具(F12)打開Application可以查看緩存


5、頁面緩存--Sessionstorage (最終解決方案採納)

Sessionstorage 和 localstorage都是H5中針對cookie緩存大小不夠出的解決方案,兩者有些不同

可查看文章:http://blog.csdn.net/fcdd123/article/details/56286106

最終採納這種解決方案,但也有一些不完美,當點擊父tab時無法統一清除緩存(即清除7個模塊的查詢狀態)


由於Sessionstorage 和 localstorage都只在當前頁面有效,所以就採用了一種笨方法,使用HttpSession保存一個考勤審覈鏈接帶過來的參數index,再在七個controller中獲取並攜帶到頁面中,根據index是否等於某個值來判斷是否清除當前頁的查詢狀態

發佈了28 篇原創文章 · 獲贊 7 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章