displaytag確實有性能的問題,最近又看到一個比較好的分頁列表控件,但同樣是每次分頁就重新提交整個頁面
確實頭痛而且笨拙。真的不如用ajax來處理這個問題
如做一個tag,頁面上有:
<s:list? columnMap="" request=""/>
生成javascript的列表,完成后,立刻用ajax調用request中的請求,去得到列表值,顯示出來
同時界面提供 上一頁下一頁等翻頁和排序按鈕,當按鈕被點擊,同樣去用ajax重取數據
有兩種方式
1 請求通過一個servlet通過反射轉發到原始Action的方法上。
在action中,除了一般的工作,另加若干如下方法:
Collection showList(httpRequest request);
對應界面中的一個列表,專門負責處理列表。根據request里的信息(包括分頁和排序信息)返回適當的數據
2 直接新建一個單獨action處理
有關分頁的計算,這里就不詳述,無非是獲得記錄總數,從而計算出當前頁,并取得相應數據。這里隨后臺不同而有不同實現。
當取數據的時候,由于ajax的異步性質,最好在界面上有些進度條之類的提示。
這樣整體方案其實并不復雜。美工上作漂亮些就行了,再支持一下數據導出。
要提到的是,分頁的情況,如果數據不一次全部取出,而是利用數據庫的 order by等來進行分頁排序,效率確實提高,但就需要穿透邏輯層,同時排序字段必須是數據庫sql中的原始字段。
在邏輯層&DAO的處理上必須更仔細,推薦采用一個PageBean攜帶所有的分頁信息(?查詢條件,排序字段/順序,當前頁數,總頁數)? 。
?
?
?