一、话题引入:

在开发一个某某系统时,经常要用到分页。

比如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相关推荐

  1. 从零开始实现一个简易的Java MVC框架(六)--加强AOP功能

    前言 在前面从零开始实现一个简易的Java MVC框架(四)--实现AOP和从零开始实现一个简易的Java MVC框架(五)--引入aspectj实现AOP切点这两节文章中已经实现了AOP功能并且引用 ...

  2. 从零开始实现一个简易的Java MVC框架(九)--优化MVC代码

    前言 在从零开始实现一个简易的Java MVC框架(七)--实现MVC中实现了doodle框架的MVC的功能,不过最后指出代码的逻辑不是很好,在这一章节就将这一部分代码进行优化. 优化的目标是1.去除 ...

  3. java前端的日期插件_几个前端时间插件总结

    几个前端时间插件总结 总结一下几款时间插件,分别是 - [ ] jeDate 手册http://www.jemui.com/jedate/ - [ ] bootstrap-datetimepicker ...

  4. react 原生html 插件,纯原生JS的瀑布流插件Macy.js,前端必备插件

    这是一款非常轻量级的纯原生JS的瀑布流插件--Macy.js,如今图片和视频网站非常多,非常适应瀑布流这样的布局方式来呈现给用户. 所以,选择一款简单易用的瀑布流js插件,可以让前端工程师快速开发出漂 ...

  5. ioc框架 java_从零开始实现一个简易的Java MVC框架(三)--实现IOC

    Spring中的IOC IoC全称是Inversion of Control,就是控制反转,他其实不是spring独有的特性或者说也不是java的特性,他是一种设计思想.而DI(Dependency ...

  6. canvas js 绘图插件_快速入门前端图表插件Echart

    在前端项目开发中,有很多地方会遇到绘制图表的需求,一般的图表可以通过canvas来绘制,但是遇到复杂一点的图表怎么办呢? 而且黑马的课程大纲已经把canvas课程删掉了,既然canvas有用,为什么要 ...

  7. php bootstrap 分页 查询,深入了解Bootstrap table表格插件(二)前后端分页模糊查询...

    这篇文章主要为大家分享了Bootstrap table学习笔记,前后端分页模糊查询,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在使用过程中,一边看文档一边做,遇到了一些困难的地方,在此记录一下 ...

  8. vscode前端常用插件

    vscode前端常用插件 文章目录 vscode前端常用插件 1. Live Server 1.1 Live Server的使用 2. rest client 3. GitLens 4. CSS pe ...

  9. WordPress替换前端字体插件

    插件概述 WordPress替换前端字体插件是一款针对Wordpress站点开发的一款前端字体替换插件.利用该插件,站长可以快速实现替换站点前端字体等,目前已收录优设标题黑.文道潮黑.仓耳渔阳体-W0 ...

最新文章

  1. 如何从零开始设计与开发一款通用模型预测调度系统 | 干货分享
  2. void关键字的使用规则
  3. Docker(五):Docker 三剑客之 Docker Machine
  4. Google的Java常用类库 Guava
  5. JNI:需要显式指定使用jar的全路径
  6. 最好用的pdf阅读器
  7. H5小游戏框架总结推荐
  8. C# QQ群管理机器人
  9. php上位机,OV7670摄像头上位机软件源码
  10. python中哈希是什么意思_利用Python如何生成hash值示例详解
  11. Zynga发布魔法三消手游《Harry Potter: Puzzles Spells》
  12. oracle中sql关键字,Oracle常用的sql语句
  13. mc服务器怎么修改浮空字,我的世界可点击的浮空字怎么做 可点击的浮空字制作方法详解...
  14. 地统计插值学习心得(三)ArcGIS Pro与ArcMap软件中地统计分析的区别
  15. ACM题目————列变位法解密
  16. CAN总线入门、LIN总线入门文档-蓝凑云下载。 LDFEditor下载 ISO-14229、15765、11898下载与阅读
  17. 彻底理解安卓应用无响应机制
  18. 【运维心得】网络ID与网络IP的区别你知道吗?
  19. 求无向图最小环算法-floyd
  20. 经典算法之直接选择排序

热门文章

  1. 自动颁发证书 AD域策略
  2. linux中权限sudo,Linux中sudo权限(下)
  3. mysql的乐观锁,悲观锁(共享锁,排斥锁)
  4. mysql使用条件限制乐观锁_mysql乐观锁解决并发问题
  5. JS 特效学习 002:图片渐显
  6. java实现文件管理
  7. 游戏脚本用什么语言写_为什么要写分镜头脚本?
  8. 关于企业能源管控平台在轧钢行业能源管理中的应用
  9. (2020版) 墙裂推荐这十款精选 IntelliJ Idea 插件
  10. SQLITE适合的场景