#displaytag:一个简易的Java分页插件(无需其他的前端分页插件) @FDDLC
一、话题引入:
在开发一个某某系统时,经常要用到分页。
比如PageHelper,它是后端分页插件,如果要在前端展示分页效果,要么自己编写前端的分页逻辑,要么再上一个前端分页插件。
而displaytag,前后端的活它都替你干了,就是这么省心。
二、先放效果图
当然喽,自己也写了不少美化样式。
三、再出示源码
1、Maven依赖:
2、Controller
3、jsp
<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib uri="http://displaytag.sf.net" prefix="display" %><%--引入taglib标签库--%>
<html>
<head><title>index.jsp</title><link rel="shortup icon" href="/img/favicon.ico"><%--网页图标:在浏览器地址栏显示--%><link rel="stylesheet" href="/css/index.css"><%--自定义的样式--%>
</head>
<body>
<%--name:后端传来的List对象,对应一个表格;pagesize:每页行数--%>
<%--
requestURI很重要。如果没有设置此项,那么生成的链接类似:
<a href="/WEB-INF/view/index.jsp?d-49653-p=3" title="Go to page 3">3</a>
上面的格式有2个问题:1、WEB-INF是禁止网页直接访问的(可把jsp文件移到外面);2、不经过Controller。
requestURI="/"中的"/"即为对应Controller的请求路径。例:requestURI="/home"
--%>
<display:table name="newsList" pagesize="3" requestURI="/"><display:caption>科技头条后台</display:caption><%--表格标题--%><%--property:要绑定的列属性,若不设置title,则title的默认值为首字母大写的property值;href:同a标签--%><%--paramId和paramProperty是url值中的键值对:path?paramId=paramProperty。这种方式只能传一对键值对--%><%--paramId可自定义,paramProperty和display:property一样,都对应列属性--%><display:column property="title" href="detail" paramId="href" paramProperty="href"></display:column><display:column property="date"></display:column><%--title:自定义列名;value:自定义列值--%><display:column title="Edit" value="编辑" href="editPage" paramId="href" paramProperty="href"></display:column><display:column title="Del" value="删除" href="delete" paramId="href" paramProperty="href"></display:column><display:setProperty name="paging.banner.placement" value="bottom"></display:setProperty><%--设置分页信息显示在顶部(默认)还是底部--%><display:setProperty name="paging.banner.item_name">新闻</display:setProperty><%--单数形式的项的名称--%><display:setProperty name="paging.banner.items_name">新闻</display:setProperty><%--复数形式的项的名称--%><display:setProperty name="paging.banner.some_items_found"><%--不同标签内部的{0}、{1}这些占位符的含义可能不一样!{0}:记录总条数{1}:条目的名称,这里的条目是"新闻"(即上面配置的项){2}:本页的首条记录{3}:本页的最后一条记录--%><div id="summary_info">共计 {0} 条{1},本页显示 {2} 到 {3} 条</div></display:setProperty><%--下面依次对应:首页、中间页、末页--%><%--{0}:页码序列:比如:1,2,3,4。页码上有超链接,移到页码上有提示;当前页的页码无提示无超链接{1}:首页{4}:末页{2}:上一页{3}:下一页--%><display:setProperty name="paging.banner.first"><%--首页的情况--%><div class="page_link">[首页 | 上一页] {0} [<a href="{3}">下一页</a> | <a href="{4}">末页</a>]</div></display:setProperty><display:setProperty name="paging.banner.full"><%--中间页的情况--%><div class="page_link">[<a href="{1}">首页</a> | <a href="{2}">上一页</a>] {0} [<a href="{3}">下一页</a>| <a href="{4}">末页</a>]</div></display:setProperty><display:setProperty name="paging.banner.last"><%--末页的情况--%><div class="page_link">[<a href="{1}">首页</a> | <a href="{2}">上一页</a>] {0} [下一页 | 末页]</div></display:setProperty>
</display:table><div><a href="insertPage">添加</a></div>
</body>
</html>
有关displaytag的一些使用细节已经在代码注释中呈现了,这里就不再啰嗦了。
四、displaytag的更多细节用法
basic.empty.showtable=false
basic.show.header=true# page | list
sort.amount=pageexport.amount=list
export.decorated=truepaging.banner.group_size=8
paging.banner.placement=topcss.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 pdfexport.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.PdfViewexport.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=# messagesbasic.msg.empty_list=Nothing found to display.
basic.msg.empty_list_row=<tr class="empty"><td colspan="{0}">Nothing found to display.</td></tr>
error.msg.invalid_page=invalid pageexport.banner=<div class="exportlinks">Export options: {0}</div>
export.banner.sepchar= |paging.banner.item_name=item
paging.banner.items_name=itemspaging.banner.no_items_found=<span class="pagebanner">No {0} found.</span>
paging.banner.one_item_found=<span class="pagebanner">One {0} found.</span>
paging.banner.all_items_found=<span class="pagebanner">{0} {1} found, displaying all {2}.</span>
paging.banner.some_items_found=<span class="pagebanner">{0} {1} found, displaying {2} to {3}.</span>paging.banner.full=<span class="pagelinks">[<a href="{1}">First</a>/<a href="{2}">Prev</a>] {0} [<a href="{3}">Next</a>/<a href="{4}">Last</a>]</span>
paging.banner.first=<span class="pagelinks">[First/Prev] {0} [<a href="{3}">Next</a>/<a href="{4}">Last</a>]</span>
paging.banner.last=<span class="pagelinks">[<a href="{1}">First</a>/<a href="{2}">Prev</a>] {0} [Next/Last]</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=, \# external sort and pagination
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
这是 displaytag jar包中一个名叫displaytag.properties的文件,更多细节,可以自行到jar包中去挖掘。
五、总结
事实上,现在使用displaytag的人很少,该插件的作者也好多年没有进行版本更新了,参考文档也很少,官网的参考文档也不行。
但是,简单用用还是没问题的。
#displaytag:一个简易的Java分页插件(无需其他的前端分页插件) @FDDLC相关推荐
- 从零开始实现一个简易的Java MVC框架(六)--加强AOP功能
前言 在前面从零开始实现一个简易的Java MVC框架(四)--实现AOP和从零开始实现一个简易的Java MVC框架(五)--引入aspectj实现AOP切点这两节文章中已经实现了AOP功能并且引用 ...
- 从零开始实现一个简易的Java MVC框架(九)--优化MVC代码
前言 在从零开始实现一个简易的Java MVC框架(七)--实现MVC中实现了doodle框架的MVC的功能,不过最后指出代码的逻辑不是很好,在这一章节就将这一部分代码进行优化. 优化的目标是1.去除 ...
- java前端的日期插件_几个前端时间插件总结
几个前端时间插件总结 总结一下几款时间插件,分别是 - [ ] jeDate 手册http://www.jemui.com/jedate/ - [ ] bootstrap-datetimepicker ...
- react 原生html 插件,纯原生JS的瀑布流插件Macy.js,前端必备插件
这是一款非常轻量级的纯原生JS的瀑布流插件--Macy.js,如今图片和视频网站非常多,非常适应瀑布流这样的布局方式来呈现给用户. 所以,选择一款简单易用的瀑布流js插件,可以让前端工程师快速开发出漂 ...
- ioc框架 java_从零开始实现一个简易的Java MVC框架(三)--实现IOC
Spring中的IOC IoC全称是Inversion of Control,就是控制反转,他其实不是spring独有的特性或者说也不是java的特性,他是一种设计思想.而DI(Dependency ...
- canvas js 绘图插件_快速入门前端图表插件Echart
在前端项目开发中,有很多地方会遇到绘制图表的需求,一般的图表可以通过canvas来绘制,但是遇到复杂一点的图表怎么办呢? 而且黑马的课程大纲已经把canvas课程删掉了,既然canvas有用,为什么要 ...
- php bootstrap 分页 查询,深入了解Bootstrap table表格插件(二)前后端分页模糊查询...
这篇文章主要为大家分享了Bootstrap table学习笔记,前后端分页模糊查询,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在使用过程中,一边看文档一边做,遇到了一些困难的地方,在此记录一下 ...
- vscode前端常用插件
vscode前端常用插件 文章目录 vscode前端常用插件 1. Live Server 1.1 Live Server的使用 2. rest client 3. GitLens 4. CSS pe ...
- WordPress替换前端字体插件
插件概述 WordPress替换前端字体插件是一款针对Wordpress站点开发的一款前端字体替换插件.利用该插件,站长可以快速实现替换站点前端字体等,目前已收录优设标题黑.文道潮黑.仓耳渔阳体-W0 ...
最新文章
- 如何从零开始设计与开发一款通用模型预测调度系统 | 干货分享
- void关键字的使用规则
- Docker(五):Docker 三剑客之 Docker Machine
- Google的Java常用类库 Guava
- JNI:需要显式指定使用jar的全路径
- 最好用的pdf阅读器
- H5小游戏框架总结推荐
- C# QQ群管理机器人
- php上位机,OV7670摄像头上位机软件源码
- python中哈希是什么意思_利用Python如何生成hash值示例详解
- Zynga发布魔法三消手游《Harry Potter: Puzzles Spells》
- oracle中sql关键字,Oracle常用的sql语句
- mc服务器怎么修改浮空字,我的世界可点击的浮空字怎么做 可点击的浮空字制作方法详解...
- 地统计插值学习心得(三)ArcGIS Pro与ArcMap软件中地统计分析的区别
- ACM题目————列变位法解密
- CAN总线入门、LIN总线入门文档-蓝凑云下载。 LDFEditor下载 ISO-14229、15765、11898下载与阅读
- 彻底理解安卓应用无响应机制
- 【运维心得】网络ID与网络IP的区别你知道吗?
- 求无向图最小环算法-floyd
- 经典算法之直接选择排序