隨著博文的增加或者評論的增加,是必要考慮一下分頁問題。
在這個項目里,對于分頁問題,我采取2種處理的方法。對于管理頁面表格型的記錄采用displayTag組件;
而對于那些博文或者評論采用自己寫的PageTags類來管理。
1. displayTag組件

將displaytag-version.jar 文件與以下5個文件一起放置在應用的WEB-INF/lib目錄里
b. 使用:
這里使用blog列表做例子
對于每條記錄我們可能有顯示要求
是不是很簡單。
c.其他問題:
配置文件displaytag.properties,需要放置在src目錄的根部,主要顯示一些文字之類的設置,支持localization,但是要注意的是,文件必須轉換成unicode才可以正常顯著。
以下是displaytag_Zh_CN.properties的示例:
在這個項目里,對于分頁問題,我采取2種處理的方法。對于管理頁面表格型的記錄采用displayTag組件;
而對于那些博文或者評論采用自己寫的PageTags類來管理。
1. displayTag組件

上面的圖片可以看出:事實上這個display tag庫就是用來顯示表格的;給它一個對象的list,它將搞定類似顯示列,排序,分頁等等事務,并以表格的形式顯示出來。
a. 安裝:將displaytag-version.jar 文件與以下5個文件一起放置在應用的WEB-INF/lib目錄里
- commons-logging
- commons-lang
- commons-collections
- commons-beanutils
- log4j
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
b. 使用:
這里使用blog列表做例子
<% List blogs = (List) request.getAttribute("blogs");%>
<h2>文章管理</h2>
<display:table name="blogs" htmlId="tab" pagesize="10" />
每頁顯示10條記錄<h2>文章管理</h2>
<display:table name="blogs" htmlId="tab" pagesize="10" />
對于每條記錄我們可能有顯示要求
<display:table name="blogs" id=" blog" htmlId="tab" pagesize="10" >
<display:column property="id" title="編號"/>
<display:column property="title" title="主題"/>
<display:column property="category" title="類別"/>
<display:column property="date" format="{0,date,yyyy-MM-dd HH:mm:ss}" title="日期",sortable="true"/>
<display:column title="操作">
<a href="/Blogs/BlogServlet?method=edit&id=${blog.id}"><img src="/Blogs/admin/img/edit.gif" border=0 /></a>
<a href="/Blogs/BlogServlet?method=delete&id=${blog.id}" onclick="javascript:return del()"><img src="/Blogs/admin/img/delete.gif" border=0 /></a>|
<a href="/Blogs/CommentServlet?method=list&bid=${blog.id}">管理評論</td>
</display:column>
</display:table>
比如id字段顯示為 標號;title主題;category類別;日期么安裝年-月-日 小時:分鐘:秒的格式顯示;并且可以手動選擇排序。<display:column property="id" title="編號"/>
<display:column property="title" title="主題"/>
<display:column property="category" title="類別"/>
<display:column property="date" format="{0,date,yyyy-MM-dd HH:mm:ss}" title="日期",sortable="true"/>
<display:column title="操作">
<a href="/Blogs/BlogServlet?method=edit&id=${blog.id}"><img src="/Blogs/admin/img/edit.gif" border=0 /></a>
<a href="/Blogs/BlogServlet?method=delete&id=${blog.id}" onclick="javascript:return del()"><img src="/Blogs/admin/img/delete.gif" border=0 /></a>|
<a href="/Blogs/CommentServlet?method=list&bid=${blog.id}">管理評論</td>
</display:column>
</display:table>
是不是很簡單。
c.其他問題:
配置文件displaytag.properties,需要放置在src目錄的根部,主要顯示一些文字之類的設置,支持localization,但是要注意的是,文件必須轉換成unicode才可以正常顯著。
以下是displaytag_Zh_CN.properties的示例:
1 #sort.behavior=list
2 #sort.amount=list
3 #basic.empty.showtable=true
4 #basic.msg.empty_list=No results matched your criteria.
5 #paging.banner.placement=top
6 #paging.banner.onepage=<span class="pagelinks"></span>
7 export.types=csv excel xml pdf rtf
8 export.excel=true
9 export.csv=true
10 export.xml=true
11 export.pdf=true
12 export.rtf=true
13 export.excel.class=org.displaytag.export.excel.DefaultHssfExportView
14 export.pdf.class=org.displaytag.export.DefaultPdfExportView
15 export.rtf.class=org.displaytag.export.DefaultRtfExportView
16 # if set, file is downloaded instead of opened in the browser window
17 #export.[mymedia].filename=
18 paging.banner.placement=bottom
19 # messages
20
21 basic.msg.empty_list=\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u8BB0\u5F55
22 basic.msg.empty_list_row=<tr class="empty"><td colspan="{0}">\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u8BB0\u5F55</td></tr>
23 error.msg.invalid_page=\u65E0\u6548\u9875\u9762
24
25 export.banner=<div class="exportlinks">Export options: {0}</div>
26 export.banner.sepchar= |
27
28 paging.banner.item_name=
29 paging.banner.items_name=
30
31 paging.banner.no_items_found=
32 paging.banner.one_item_found=
33 paging.banner.all_items_found=
34 paging.banner.some_items_found=
35
36 paging.banner.full=<span class="pagelinks"><font align>[<a href="{1}">|<</a>/<a href="{2}"><</a>] {0} [<a href="{3}">></a>/<a href="{4}">>|</a>]</span>
37 paging.banner.first=<span class="pagelinks">[\u9996\u9875/\u4E0A\u4E00\u9875] {0} [<a href="{3}">\u4E0B\u4E00\u9875</a>/<a href="{4}">\u5C3E\u9875</a>]</span>
38 paging.banner.last=<span class="pagelinks">[<a href="{1}">\u9996\u9875</a>/<a href="{2}">\u4E0A\u4E00\u9875</a>] {0} [\u4E0B\u4E00\u9875/\u5C3E\u9875]</span>
39 paging.banner.onepage=<span class="pagelinks">{0}</span>
40
41 paging.banner.page.selected=<strong>{0}</strong>
42 paging.banner.page.link=<a href="{1}" title="{0}">{0}</a>
43 paging.banner.page.separator=, \
38行paging.banner.placement=bottom 指定分頁欄出現在表格的下面,當然還有top/both兩個選擇。2 #sort.amount=list
3 #basic.empty.showtable=true
4 #basic.msg.empty_list=No results matched your criteria.
5 #paging.banner.placement=top
6 #paging.banner.onepage=<span class="pagelinks"></span>
7 export.types=csv excel xml pdf rtf
8 export.excel=true
9 export.csv=true
10 export.xml=true
11 export.pdf=true
12 export.rtf=true
13 export.excel.class=org.displaytag.export.excel.DefaultHssfExportView
14 export.pdf.class=org.displaytag.export.DefaultPdfExportView
15 export.rtf.class=org.displaytag.export.DefaultRtfExportView
16 # if set, file is downloaded instead of opened in the browser window
17 #export.[mymedia].filename=
18 paging.banner.placement=bottom
19 # messages
20
21 basic.msg.empty_list=\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u8BB0\u5F55
22 basic.msg.empty_list_row=<tr class="empty"><td colspan="{0}">\u6CA1\u6709\u7B26\u5408\u6761\u4EF6\u7684\u8BB0\u5F55</td></tr>
23 error.msg.invalid_page=\u65E0\u6548\u9875\u9762
24
25 export.banner=<div class="exportlinks">Export options: {0}</div>
26 export.banner.sepchar= |
27
28 paging.banner.item_name=
29 paging.banner.items_name=
30
31 paging.banner.no_items_found=
32 paging.banner.one_item_found=
33 paging.banner.all_items_found=
34 paging.banner.some_items_found=
35
36 paging.banner.full=<span class="pagelinks"><font align>[<a href="{1}">|<</a>/<a href="{2}"><</a>] {0} [<a href="{3}">></a>/<a href="{4}">>|</a>]</span>
37 paging.banner.first=<span class="pagelinks">[\u9996\u9875/\u4E0A\u4E00\u9875] {0} [<a href="{3}">\u4E0B\u4E00\u9875</a>/<a href="{4}">\u5C3E\u9875</a>]</span>
38 paging.banner.last=<span class="pagelinks">[<a href="{1}">\u9996\u9875</a>/<a href="{2}">\u4E0A\u4E00\u9875</a>] {0} [\u4E0B\u4E00\u9875/\u5C3E\u9875]</span>
39 paging.banner.onepage=<span class="pagelinks">{0}</span>
40
41 paging.banner.page.selected=<strong>{0}</strong>
42 paging.banner.page.link=<a href="{1}" title="{0}">{0}</a>
43 paging.banner.page.separator=, \