转载自:http://blog.sina.com.cn/s/blog_766d163d0100pb80.html
在项目中加入displaytag-1.1.jar和display-export-poi-1.1.jar这两个包
(在web.xml下添加一个filter,name为exportFilter,class为org.displaytag.filter.ResponseOverrideFilter)
在jsp页面做一个引用:
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %>
当我们想在jsp页面上显示这个test这个list时,我们只需写一句话:
<display:table name ="test"/> 或<display:table name ="${test}"/>
display tag 会自动生成一个table
上面是最简单的display tag的使用,我们可以给它加上样式等,也可以定义显示的列,如下:
<div class="displayTable">
<display:table name="staList" id="row" pagesize="15" export="true" class="displaytag" requestURI="staffInfo_browseStaffInfo.action" >
<display:column title="${label1}" sortable="true" headerClass="sortable" style="text-align:center;">
${row_rowNum}
</display:column>
<display:column property="sta_id" title="${label2}" sortable="true" headerClass="sortable" style="text-align:center;"/>
<display:column property="dep_id" title="${label3}" sortable="true" headerClass="sortable" style="text-align:center;"/>
<display:column property="sta_name" title="${label4}" sortable="true" headerClass="sortable" style="text-align:center;"/>
<display:column title="${label5}" media="html" style="text-align:center;">
<s:url action="staffInfo_viewStaff" id="viewStaff">
<s:param name="sta_id" value="%{#attr.row.sta_id}"/>
</s:url>
<a href="${viewStaff}"><s:text name="label_view"/></a>
<s:url action="staffInfo_editStaff" id="modifyStaff">
<s:param name="sta_id" value="%{#attr.row.sta_id}" />
</s:url>
<a href="${modifyStaff}"><s:text name="label_modify"/></a>
<s:url action="staffInfo_delStaff" id="delStaff">
<s:param name="sta_id" value="%{#attr.row.sta_id}" />
</s:url>
<a href="${delStaff}"><s:text name="label_delete"/></a>
</display:column>
<display:setProperty name="export.csv.filename" value="StaffInfo.csv"/>
<display:setProperty name="export.excel.filename" value="StaffInfo.xls"/>
</display:table>
</div>
想要加链接也很简单,如下所示:
<div style="margin-bottom:10px;">
<s:url action="staffInfo_toAddStaff" id="addStaffUrl">
<s:param name="tmp"><%=System.currentTimeMillis()%></s:param>
</s:url>
<a href="${addStaffUrl}"><s:text name="staff_add"/></a>
</div>
下面总结几个display最常用的功能,更多功能请参考:http://www.displaytag.org.index.jsp
1.分页
pagesize=“每页显示行数”
2.对列排序
headerClass="sortable"
如果table有分页,display tag 默认只对当前页排序,如想对整个list排序,可在display:tablezhijia
之间添加一段代码:<display:setProperty name ="sort.amount" value="list">
3.导出数据
export="true",display tag默认会提供三种数据导出方式:csv,excel,xml
另外,display tag还可以导出为PDF格式,下一个辅助包iText.jar,copy到lib目录下,然后
<display:setProperty name="export.pdf" value="true">
4.display tag的属性设置(displaytag.properties)
basic.empty.showtable=false设置当数据为空时,是不是显示表格
basic.show.header=true数据为空时,是否显示表头
# page | list 设置排序的数据量
sort.amount=page
export.amount=list
export.decorated=true
paging.banner.group_size=8
paging.banner.placement=top
css.tr.even=even
css.tr.odd=odd
css.th.sorted=sorted
css.th.ascending=order1
css.th.descending=order2
css.table=
css.th.sortable=sortable
# factory classes for extensions
factory.requestHelper=org.displaytag.util.DefaultRequestHelperFactory
# factory class for decorators
factory.decorator=org.displaytag.decorator.DefaultDecoratorFactory
# locale provider (Jstl provider by default)
locale.provider=org.displaytag.localization.I18nJstlAdapter
# locale.resolver (nothing by default, simply use locale from request)
#locale.resolver=
export.types=csv excel xml pdf
export.csv.class=org.displaytag.export.CsvView
export.excel.class=org.displaytag.export.ExcelView
export.xml.class=org.displaytag.export.XmlView
export.pdf.class=org.displaytag.export.PdfView
export.csv=true
export.csv.label=<span class="export csv">CSV </span>
export.csv.include_header=false
export.csv.filename=
export.excel=true
export.excel.label=<span class="export excel">Excel </span>
export.excel.include_header=true
export.excel.filename=
export.xml=true
export.xml.label=<span class="export xml">XML </span>
export.xml.filename=
export.pdf=false
export.pdf.label=<span class="export pdf">PDF </span>
export.pdf.include_header=true
export.pdf.filename=
export.rtf=false
export.rtf.label=<span class="export rtf">RTF </span>
export.rtf.include_header=true
export.rtf.filename=
# messages (以下为分页的CSS定义)
basic.msg.empty_list=\u6CA1\u6709\u53EF\u663E\u793A\u7684\u8BB0\u5F55\u5B58\u5728.
basic.msg.empty_list_row=<tr class\="empty"><td colspan\="{0}">\u6CA1\u6709\u53EF\u663E\u793A\u7684\u8BB0\u5F55\u5B58\u5728.</td></tr>
error.msg.invalid_page=invalid page
export.banner=<div class\="exportlinks">\u5BFC\u51FA\u65B9\u5F0F\: {0}</div>
export.banner.sepchar= |
paging.banner.item_name=item
paging.banner.items_name=items
paging.banner.no_items_found=<span class\="pagebanner">\u6CA1\u6709\u8BB0\u5F55\u5B58\u5728.</span>
paging.banner.one_item_found=<span class\="pagebanner">\u5171\u627E\u52301\u6761\u8BB0\u5F55.</span>
paging.banner.all_items_found=<span class\="pagebanner">\u5171\u627E\u5230{0}\u6761\u8BB0\u5F55, \u663E\u793A\u6240\u6709\u8BB0\u5F55.</span>
paging.banner.some_items_found=<span class\="pagebanner">\u5171\u627E\u5230{0}\u6761\u8BB0\u5F55, \u663E\u793A {2} \u5230 {3}.</span>
paging.banner.full=<span class\="pagelinks">[<a href\="{1}">\u9996\u9875</a>/<a href\="{2}">\u4E0A\u4E00\u9875</a>] {0} [<a href\="{3}">\u4E0B\u4E00\u9875</a>/<a href\="{4}">\u672B\u9875</a>]</span>
paging.banner.first=<span class\="pagelinks">[\u9996\u9875/\u4E0A\u4E00\u9875] {0} [<a href\="{3}">\u4E0B\u4E00\u9875</a>/<a href\="{4}">\u672B\u9875</a>]</span>
paging.banner.last=<span class\="pagelinks">[<a href\="{1}">\u9996\u9875</a>/<a href\="{2}">\u4E0A\u4E00\u9875</a>] {0} [\u4E0B\u4E00\u9875/\u672B\u9875]</span>
paging.banner.onepage=<span class="pagelinks">{0}</span>
paging.banner.page.selected=<strong>{0}</strong>
paging.banner.page.link=<a href="{1}" title="Go to page {0}">{0}</a>
paging.banner.page.separator=,
pagination.sort.param=sort
pagination.sortdirection.param=dir
pagination.pagenumber.param=page
pagination.searchid.param=searchid
pagination.sort.asc.value=asc
pagination.sort.desc.value=desc
pagination.sort.skippagenumber=true
# unused
save.excel.banner=<a href="{0}" rel="external">save ({1} bytes)</a>
save.excel.filename=export.xls