好长时间没有来了,这段时间忙于其他事情,现在打算整理一下呈现的控件,主要对比一下displaytag和jmesa,先看一下displaytag
概述
Displaytag是一个开源的用来呈现报表的一个工具,使用比较方便,可以满足表格的小时,可以分页显示,可以导出excel,xml,pdf等等功能,是一个功能比较强大的控件,同时也是有他的不足之处,所以这里对于他的源代码进行了分析,便于从底层理解他的编写的原理.
DisplayTag主要的原理是对于呈现的数据表格进行了抽象,抽象成一个model下的格式
对于他的模型抽象比较简单,这样将整个分成三个主要的模块,一个是标签部分,用来组装模型的数据,一部分是模型部分,但是是核心内容,另外一部分就是用来显示的view部分,这样将DisplayTag整体按照MVC的思想进行了系统结构.下面之一说明
整体控制标签部分
标签主要的作用就是将数据进行分解组装成上面的数据结构。组装的原理如下,按照一个简单的例子进行说明
<display:table name="test">
<display:column property="id" title="ID" />
<display:column property="name" />
<display:column property="email" />
<display:column property="status" />
<display:column property="description" title="Comments" />
</display:table>
首先,标签解析TableTag,在开始的时候,在doStartTag中实例化一个TableModel,然后进行属性的封装
然后,进行模型的数据组装,数据主要包括标题行和数据行二类数据类型,对于标题行有一个转换的算法,就是依靠rowNumber进行输出标题行,因为DisplayTag支持不输入任何列明的方式进行数据的输出,例如<display:table name="test" />他会按照顺序输出对象的属性,所以他按照如下算法进行:
l 如果标题内容部分为空,表示数据的第一行就是标题行,他会去解析数据的第一行放到标题行
l 如果存在列内容,首先解析ColumnTag,解析完成以后执行TableTag的doAfterBody()方法,解析完成标题行.
最后,在doEndTag()方法中进行数据的整理输出
整体结构的模型部分
系统整体模型结构如上面显示的部分,但是模型具有唯一性,模型有自己很多扩展的特性,为了防止过多的继承这个模型造成类的扩展,系统采用了一个Decorator模型对于模型进行了功能的增强,DisplayTag提供的汇总功能都是在这部分继续的扩展.他们的结构如下
多样的展现部分
为了满足多种数据类型的数据的展现,系统对于展现的各种模式进行的抽象,形成了一个如下结构的呈现阵列.
视图需要输出的,系统编写了专门的renderer,,包括输出到页面.大体的输出结构如下
个人感觉DisplayTag的缺点
l 无法真正完成翻页,是依靠简单的算法,主要是因为他的简单的模型的原因
l 输出的整体结构有TableWriterTemplate代码中写死,调整不够灵活,当然这个地方不建议使用模板,影响效率,可以考虑采用工具制作插件的方式.
l 标题行不能存在多行标题行和标题行的合并,无法满足中国的复杂报表的需求
l 架构中非模型直接操作模型的结构,和内部结构耦合,结构变化影响较大
优点
l 模块化较好,减少开发工作量
l 使用简单
l 界面表达方式比较丰富
分享到:
相关推荐
2025最新全国水利安全生产知识竞赛题库(含答案).docx
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
因为文件过大所以使用bz2进行了2次压缩,请解压成tar包后在上传到服务器
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
iostat打印解析画图工具
1、文件内容:fence-agents-compute-4.2.1-41.el7_9.6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/fence-agents-compute-4.2.1-41.el7_9.6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
PDF格式,229页,包括有环保,新能源,木工,包装等行业的应用。适用于电气自动化行业。
1、文件内容:dropwatch-1.4-9.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/dropwatch-1.4-9.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1、文件内容:fence-agents-emerson-4.2.1-41.el7_9.6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/fence-agents-emerson-4.2.1-41.el7_9.6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
航空发动机磨粒荷电特性研究.pdf
第十一届蓝桥杯大赛个人赛校内选拔(软件类)真题全面考察了参赛选手的编程与算法能力,涵盖多个热门编程语言,为选手提供了展现自身实力的舞台。 考察范围与方向 真题在编程语言上聚焦于 C/C++、Java、Python 等主流语言。考察内容广泛,既有基础的语法运用,也涉及复杂的数据结构和算法。数据结构方面,对数组、链表、栈、队列、哈希表等的使用有不同程度的考察;算法上,动态规划、贪心算法、搜索算法等经典算法是考察重点。 题型示例与特点 在具体题型上,有数值计算类题目,例如给定条件计算特定数值,要求选手有较强的逻辑思维和数学运算能力;字符串处理类题目,如字符串匹配、替换等,考验选手对字符串操作函数的熟悉程度;还有图论与搜索类题目,像最短路径问题,需要选手掌握相应的搜索算法。 考察目的与意义 这次校内选拔真题旨在筛选出编程能力强、算法思维敏捷的选手,为后续的正式比赛储备人才。通过解答这些真题,选手能发现自身知识短板,明确学习方向。对于学校而言,能了解学生的编程水平,为教学改进提供参考。同时,这也为学生提供了与同龄人交流切磋的机会,激发他们学习编程的热情,提升解决实际问题的能力。
一种采用耦合电感的开关电路分析.pdf
rancher-active-proxy
RSSIIndoorLocation-master
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1、文件内容:exchange-bmc-os-info-1.8.18-11.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/exchange-bmc-os-info-1.8.18-11.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
1、文件内容:docbook-style-xsl-1.78.1-3.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/docbook-style-xsl-1.78.1-3.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装