DisplayTag標簽給兩個table分頁問題
大家都知道DisplayTag標簽在中小型項目中使用是的比較多的,關于它的用法和一些優點我這里就不多說了,網上有很多資料供參考。這里就說下他的分頁問題。DisplayTag標簽的分頁是通過 requestURI 屬性實現的,代碼如下:
Html代碼:
- <display:table id="idListRType" name="pageViewRtype"
- class="list_tb" requestURI="${path}/site/rTypeClickPageTag.action" >
- <display:column property="RType" title="房間類型"></display:column>
- <display:column property="price" title="預設單價"></display:column>
- <display:column property="clPrice" title="鐘點價格/小時"></display:column>
- <display:column property="bed" title="床位數"></display:column>
- <display:column property="clRoom" title="是否按鐘點計費(Y/N)"></display:column>
- <display:column title="操作"><a rel="#">修改</a> <a rel="#">刪除</a> </display:column>
- </display:table>
這種方法只要其后臺服務處理恰當在jsp頁面可輕松實現“上一頁”“下一頁”等功能。
可是如果頁面上有兩個(或者更多)表格需要分頁怎么辦?是的,最初我也想的是,這不是依葫蘆畫瓢嗎?照著上面的寫不就得了,于是實現代碼如下:
Html代碼 :
- <display:table id="idListRType" name="pageViewRtype"
- class="list_tb" requestURI="${path}/site/rTypeClickPageTag.action" >
- <display:column property="RType" title="房間類型"></display:column>
- <display:column property="price" title="預設單價"></display:column>
- <display:column property="clPrice" title="鐘點價格/小時"></display:column>
- <display:column property="bed" title="床位數"></display:column>
- <display:column property="clRoom" title="是否按鐘點計費(Y/N)"></display:column>
- <display:column title="操作"><a rel="#">修改</a> <a rel="#">刪除</a> </display:column>
- </display:table>
- <display:table id="idListRoominfo" name="pageViewRinfo"
- class="list_tb" requestURI="${path}/site/rInfoClickPageTag.action">
- <display:column property="id" title="房間號"></display:column>
- <display:column property="roomtype.RType" title="房間類型"></display:column>
- <display:column property="state" title="房間狀態"></display:column>
- <display:column property="location" title="所在區域"></display:column>
- <display:column property="RTel" title="房間電話"></display:column>
- <display:column title="操作"><a rel="#">修改</a> <a rel="#">刪除</a> </display:column>
- </display:table>
呵呵,看起來妥妥的。可是當點擊兩個表格其中一個的上一頁,下一頁鏈接時發現,另一個表格也跟著動了:它回到了首頁,我們的一般設計應該是,當操作其中的一個表格時,另一個表格應該保持原來的狀態,該是第幾頁的就是第幾頁,不應該隨著其他的分頁而變化。那么,為什么會出現上述這種情況呢?稍微思考下我們馬上發現問題所在了,那是因為在操作其中一個表格時另一個表格的當前頁碼并沒有被傳送至后臺。知道問題了,那么我們的改進代碼如下:
Html代碼:
- <display:table id="idListRType" name="pageViewRtype"
- class="list_tb" requestURI="${path}/site/rTypeClickPageTag.action?rtypeCurrentPage=${pageViewRtype.currentPage}" >
- <display:column property="RType" title="房間類型"></display:column>
- <display:column property="price" title="預設單價"></display:column>
- <display:column property="clPrice" title="鐘點價格/小時"></display:column>
- <display:column property="bed" title="床位數"></display:column>
- <display:column property="clRoom" title="是否按鐘點計費(Y/N)"></display:column>
- <display:column title="操作"><a rel="#">修改</a> <a rel="#">刪除</a> </display:column>
- </display:table>
- <display:table id="idListRoominfo" name="pageViewRinfo"
- class="list_tb" requestURI="${path}/site/rInfoClickPageTag.action?rtypeCurrentPage=${pageViewRtype.currentPage}">
- <display:column property="id" title="房間號"></display:column>
- <display:column property="roomtype.RType" title="房間類型"></display:column>
- <display:column property="state" title="房間狀態"></display:column>
- <display:column property="location" title="所在區域"></display:column>
- <display:column property="RTel" title="房間電話"></display:column>
- <display:column title="操作"><a rel="#">修改</a> <a rel="#">刪除</a> </display:column>
- </display:table>
其中rtypeCurrentPage和rtypeCurrentPage兩個參數在后臺用request接收一下,重新查詢一遍就可以了,那這樣是不是就可以了呢?還是不行,多點擊幾次分頁鏈接之后發現無法定位到頁面了,再看瀏覽器地址欄發現,rtypeCurrentPage參數的個數隨著你點擊超鏈接的次數在同步增加,情況如下:
http://localhost:8080/SunHotelManager/site/rInfoClickPageTag.action?rtypeCurrentPage=1&rtypeCurrentPage=1
這樣當然就有問題了,那這怎么解決呢?說也簡單,加個 excludedParams="*"屬性就可以了,代碼:
Html代碼:
- <display:table id="idListRType" name="pageViewRtype" excludedParams="*"
- class="list_tb" requestURI="${path}/site/rTypeClickPageTag.action?rtypeCurrentPage=${pageViewRtype.currentPage}" >
- <display:column property="RType" title="房間類型"></display:column>
- <display:column property="price" title="預設單價"></display:column>
- <display:column property="clPrice" title="鐘點價格/小時"></display:column>
- <display:column property="bed" title="床位數"></display:column>
- <display:column property="clRoom" title="是否按鐘點計費(Y/N)"></display:column>
- <display:column title="操作"><a rel="#">修改</a> <a rel="#">刪除</a> </display:column>
- </display:table>
- <display:table id="idListRoominfo" name="pageViewRinfo" excludedParams="*"
- class="list_tb" requestURI="${path}/site/rInfoClickPageTag.action?rtypeCurrentPage=${pageViewRtype.currentPage}">
- <display:column property="id" title="房間號"></display:column>
- <display:column property="roomtype.RType" title="房間類型"></display:column>
- <display:column property="state" title="房間狀態"></display:column>
- <display:column property="location" title="所在區域"></display:column>
- <display:column property="RTel" title="房間電話"></display:column>
- <display:column title="操作"><a rel="#">修改</a> <a rel="#">刪除</a> </display:column>
- </display:table>
這樣就可以實現兩個表格分頁互不干擾了。
可能有大俠說,這里對每個表格用異步不就可以嗎?是的一開始我也覺得是,可是,DisplayTag標簽壓根沒提供這種實現啊,至少我沒找到。
原文來自站長網
原文來自站長網