好长时间没有来了,这段时间忙于其他事情,现在打算整理一下呈现的控件,主要对比一下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 界面表达方式比较丰富
分享到:
相关推荐
【自然语言处理(NLP)】机器翻译之数据处理(数据收集、数据清洗、数据分词、数据标注、数据划分)
1、文件内容:fence-agents-rhevm-4.2.1-41.el7_9.6.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/fence-agents-rhevm-4.2.1-41.el7_9.6.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
适用于Matlab 2019a和b版本的基于MRAS无位置传感器控制系统设计:速度环模块采用PI与MTPA控制策略,适用于Matlab2019a和b版本 速度环模块儿分别用PI和MTPA控制策略 基于MRAS(模型参考自适应法)的无位置传感器控制系统设计。 ,关键词:Matlab 2019a/b; 速度环模块; PI控制策略; MTPA控制策略; MRAS; 无位置传感器控制系统设计。,Matlab 2019a/b版本:基于PI和MTPA控制策略的MRAS无位置传感器控制系统设计。
1、文件内容:exiv2-devel-0.27.0-4.el7_8.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/exiv2-devel-0.27.0-4.el7_8.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.Matlab实现CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)。 2.输出MAE 、 MAPE、MSE、RMSE、R2多指标评价,运行环境Matlab2023及以上。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 5.作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信.
1、文件内容:dotconf-1.3-8.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/dotconf-1.3-8.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
1.Matlab实现CNN-LSTM卷积长短期记忆神经网络时间序列预测(Matlab完整源码和数据)。 2.输出MAE 、 MAPE、MSE、RMSE、R2多指标评价,运行环境Matlab2023及以上。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 5.作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信.
2025医学三基考试题库及答案(通用版).docx
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
数字简谱播放程序代码
2025医疗三基三严知识试题题库(附答案).docx
基于牛顿拉夫逊潮流计算结果的故障支路功率灵敏度分析与潮流修正量计算,开断潮流,基于牛顿拉夫逊潮流计算结果,引入灵敏度矩阵和雅可比矩阵计算支路功率对故障点注入功率的灵敏度,进而计算故障后所有支路潮流的修正量 ,核心关键词:开断潮流;牛顿拉夫逊潮流计算;灵敏度矩阵;雅可比矩阵;支路功率;故障点注入功率;故障后支路潮流修正量;计算。,基于潮流计算结果的故障后支路功率灵敏度分析及修正量计算
1、文件内容:festvox-bdl-arctic-hts-0.20061229-28.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/festvox-bdl-arctic-hts-0.20061229-28.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
OPENCV4.8.0+MINGW编译
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
2025最新医院收费员考试题库及答案.docx