Struts2+DataTables插件整合,封装交互Json数据

Struts2项目里直接跑的DataTables全功能示例:服务端分页+列拖拽+Excel/CSV一键导出 这个资源包是为传统Java Web项目准备的DataTables开箱即用集成方案,基于Struts2框架构建,不依赖Spring或其他新式容器。前端支持列拖拽调整显示顺序,表格初始化脚本已封装在js目录下;分页提供两种模式——纯前端本地分页适合小数据量,后端服务端分页通过Action接收draw、start、length等标准参数,返回JSON格式响应,适配大数据场景;导出功能覆盖当前页和全部数据,生成标准.xlsx和.csv文件,无需额外POI或OpenCSV配置,jar包已内置。整个结构遵循经典WebR 阅读详情

1.开发环境

1.1 Struts2框架相关jar包

1.2 json-lib-2.2.3-jdk15.jar

1.3 jquery.dataTables.min.js版本为1.10.8和jQuery相关js

2.编写目的

   将DataTables插件与Struts2交互变得更简单易用,代码整洁化!

3.核心代码

3.1 前端封装DataTables插件的相关js代码

datatables-pack.js

/**
*处理DataTable的数据
*公共部分
*/
var DataTablePack = function(){

	//汉化分页条
	var language = {
		paginate:{
			first:'首页',
			last:'末页',
			previous:'上一页',
			next:'下一页'
		},
		lengthMenu:'显示 _MENU_ 条',
		zeroRecords:'没有检索到有效数据!',
		info:'显示 _START_ 到 _END_ 条记录',
		infoEmpty:'没有检索到有效数据!',
		search:'查找:',
		processing:'正在加载数据,请稍候...',
		infoFiltered:'共计 _TOTAL_ 条记录'
	}
	
	/* 全选以及选中效果功能  */
	function checkAll(table){
		//全选功能
		table.find('.checkall').change(function () {
			var allCheck = table.find('tbody input[type=checkbox]');
			if(jQuery(this).is(":checked")){
				allCheck.each(function(){ 
					jQuery(this).attr('checked',true);
					jQuery(this).parent().addClass('checked');	//used for the custom checkbox style
				});
			}else{
				allCheck.each(function(){ 
					jQuery(this).attr('checked',false);
					jQuery(this).parent().removeClass('checked');	//used for the custom checkbox style
				});
			}
        });

		//选中效果
        table.on('change', 'tbody tr .check', function () {
            $(this).parents('tr').toggleClass("active");
            if(jQuery(this).is(":checked")){
            	jQuery(this).attr('checked',true);
            	jQuery(this).parent().addClass('checked');
            }else{
            	jQuery(this).attr('checked',false);
            	jQuery(this).parent().removeClass('checked');
            }
        });
		
       // table.parent().parent().find('.dataTables_length select').addClass("form-control input-xsmall input-inline"); // modify table per page dropdown
	}
	
	/** 公开调用方法 **/
	var DataTablePublic = {
		/* 处理处理静态数据  */
		baseTable:function(table){
			var oTable = table.dataTable({
				'language':language,//汉化工具条
				'lengthMenu':[10,20,30,50,100],//显示每页大小的下拉框中的选项
				'dom': "<'row' <'col-md-12'T>><'row'<'col-md-6 col-sm-12'f><'col-md-6 col-sm-12'l>r><'table-scrollable't><'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>", // horizobtal scrollable datatable
				'pagingType':'full_numbers',//分页样式
				'columnDefs':[{
					'targets':[0,1],
					'orderable':false
				}],//默认列参数
				"order":[
			        [2, "asc"]
			    ] //默认排序的列
			});
			
			checkAll(table);//全选功能
	        
			return oTable;
		},
		/* 即时后台获取数据*/
		serverTable:function(table,url,reqData,columns,startNum){
			//alert(url);
			var oTable = table.dataTable({
				'ajax':{
					dataType:'json',
					/////contentType:'application/json',
					type:'post',//更改Ajax的请求方式 
					url:url,//从一个ajax数据源读取数据给表格内容
					data:function(aoData){
						reqData['dtJson'] = JSON.stringify(aoData); 
						return reqData;
					},
					//data:'{"username":"admin","userpwd":"123456"}',
					error:function (resp){
						alert(JSON.stringify(resp));
					}//添加额外的参数发送到服务器
				},
				'serverSide':true,//是否开启服务器模式
				'stateSave':true,//保存状态 - 在页面重新加载的时候恢复状态(页码等内容)
				'processing':true,//当表格处在处理过程(例如排序)中时,启用或
Spring Boot 3.2学生成绩管理系统工程实践 学生成绩管理系统是Java Web开发的经典场景,其本质是高可靠性、强一致性、可审计的业务型应用。理解其背后的数据建模原理(如历史快照与中间表设计)、事务控制机制(如幂等提交与审计日志)和技术选型逻辑(如Spring Boot 3.x对JDK17+和ZGC的依赖),是区分课程作业与真实工程的关键。该系统融合MyBatis-Plus的LambdaQueryWrapper查询优化与Vue 3组合式API的响应式封装,支撑教务场景下的成绩录入、统计报表、权限嵌套等复杂需求,为Java开发者提供可部署、可调试、可演 阅读详情

相关推荐

DataTables自行封装请求参数和返回数据的零耦合服务端分页示例(PHP&JAVA)

使用方法: 支持JAVA和PHP两种后台。 PHP:直接将WebRoot下的文件放到php服务器上直接运行即可,记得启用sqlite3。 JAVA:修改user-manage.js,将访问后台的url由"datasource.php"改为"datasource.jsp",然后将WebRoot下的文件放到tomcat下直接运行。也可使用Eclipse直接导入此项目文件。 简要说明: 使用DataTable默认的ajax交互功能,对传给后台和从后台获取的数据都有命名格式要求,这样一来耦合度较高,不利于后期扩展,不能直接适用于需要跟多种不同前端或其他业务交互的项目。本例子主要展示了自行封装请求参数和返回数据的用法,对后台的交互没有任何格式和命名限制。 基于Bootstrap 2.3.2,相关的其他插件包括图标控件FontAwesome、等待提示控件Spinjs(修改版)、弹窗控件lhgdialog(修改版) 主要展现: 封装请求参数(查询、排序、分页,不再需要data、dataFilter和dataSrc) 封装返回数据 自定义查询参数 服务器分页 自行控制和自定义遮罩效果 生成自定义效果的单元格(在线离线) 生成复选框单元格 响应复选框选择事件 生成操作按钮单元格 响应操作栏按钮点击事件 响应行点击事件 渲染回调事件(默认选中第一行) 分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css) CSS实现单元格超长文字省略号显示 CSS实现单元格连续纯字母数字强制换行显示

DataTables自行封装请求参数和返回数据的零耦合服务端分页示例

使用DataTable默认的ajax交互功能,对传给后台和从后台获取的数据都有命名格式要求,这样一来耦合度较高,不利于后期扩展,不能直接适用于需要跟多种不同前端或其他业务交互的项目。本例子主要展示了自行封装请求参数和返回数据的用法,对后台的交互没有任何格式和命名限制。 基于Bootstrap 2.3.2,相关的其他插件包括图标控件FontAwesome、等待提示控件Spinjs(修改版)、弹窗控件lhgdialog(修改版) 主要展现: 封装请求参数(查询、排序、分页,不再需要data和dataSrc) 封装返回数据 自定义查询参数 服务器分页 自行控制和自定义遮罩效果 生成自定义效果的单元格(在线离线) 生成复选框单元格 响应复选框选择事件 生成操作按钮单元格 响应操作栏按钮点击事件 响应行点击事件 渲染回调事件(默认选中第一行) 分页栏增加跳页功能(直接修改了dataTables.bootstrap.js和dataTables.bootstrap.css)

ssh框架搭建+datatables分页

spring3.2+hibernate3.6+struts3.4 datatables 附带sql

java中可使用的datatable

在java下可用的datatable组件,提供了jar包和调用例子。jar包从国外一个网站找到的,可惜找遍了也没找到怎么使用,费了半天挨个试,终于知道怎么用了(从resultset到datatable,加行,加列,赋值,取值,循环显示等)。供需要使用的下载。 使用修改如下(example文件夹下的java代码如下修改): //使用datatable DataTable dtb = new DataTable(); data.common.JdbcAdapter dAdapter = new JdbcAdapter(); dAdapter.fillDataTable(dtb, rs); //加行 dtb.getRows().addNew(); //加列 DataColumn dtm=new DataColumn("ttt", 1); dtb.getColumns().add(dtm); //给一行赋值 dtb.getRows().get(0).setString(3, "test"); //给一列赋值 dtb.getRows().get(2).setString(4, "mytest"); //循环显示数据 for (int i = 0; i < dtb.getRows().size(); i++) { DataRow row = dtb.newRow(); row = dtb.getRows().get(i); //显示一行的每列数据 for (int j = 0; j < dtb.getColumns().size(); j++) { System.out.println(row.getString(j)); } }

struts2下用的 的日期控件

2个struts2下的日期控件,在jsp页面上使用,有例子。只要将.jar文件copy 到/web-inf/lib目录下就可以。很简单

jquery datatable后台封装数据示例代码

主要介绍了jquery datatable后台封装数据的示例代码,需要的朋友可以参考下

无刷电机控制避坑指南:六步换向 vs FOC的5个关键差异

本文深入对比了无刷电机控制中六步换向与FOC(磁场定向控制)的五大核心差异。从控制逻辑、性能表现、效率能耗、硬件成本到应用场景,详细解析了FOC如何通过矢量合成实现平滑的正弦波控制与更高效率,而六步换向则以低成本实现简单开关驱动。旨在帮助工程师根据项目需求,在性能、成本与复杂度间做出最佳选择。

weixin_29216957的博客 507

Protege新手必看:从安装到建模的完整指南(附推理功能详解)

本文为Protege新手提供从安装、配置到核心建模的完整实战指南。详细讲解了Java环境准备、本体项目创建、类与属性定义、个体填充等关键步骤,并重点解析了推理功能的配置与使用,帮助读者快速构建可逻辑推理的知识图谱,避开常见陷阱。

numpy6sculptor的博客 797

C#程序突然崩溃怎么办?5分钟学会分析Dump文件(Visual Studio 2022实战)

本文详细介绍了在C#程序崩溃或无响应时,如何捕获并分析Dump文件以快速定位问题。通过Visual Studio 2022实战演示,重点讲解了配置符号服务器、解读调用堆栈与内存状态,以及针对CPU飙高、内存泄漏等典型场景的分析方法,帮助开发者高效进行故障诊断。

docker8compose的博客 474

STC32G电调调试血泪史:从TPH1R403NL MOS管烧毁到PWM信号异常排查全记录

本文详细记录了STC32G无刷电调调试过程中的常见问题与解决方案,包括MOS管烧毁、PWM信号异常等关键故障排查。通过电源系统检测、驱动电路验证及三相平衡调试等实战经验,帮助硬件爱好者快速定位问题,提升电调调试效率。特别针对TPH1R403NL等MOS管的保护措施进行了重点分析。

weixin_33736048的博客 551

高效 DEM 拼接

通过以上步骤的系统实施,能够实现高效、准确的大型地理信息系统 DEM 数据拼接,满足复杂和大规模项目的应用需求。

llhllq2015的博客 1034

Docker部署OnlyOffice踩坑实录:解决editor.bin下载失败的3种姿势

本文详细解析了Docker部署OnlyOffice时editor.bin下载失败的常见原因,并提供了三种核心解决方案。重点剖析了容器网络配置、Nginx反向代理(特别是proxy_pass设置)以及安全策略调整,帮助开发者彻底解决静态资源加载问题,确保文档协作平台稳定运行。

weixin_29281941的博客 872

512分辨率万能遮罩模型实战指南:从下载到高精度应用

本文提供了512分辨率万能遮罩模型的完整实战指南。该模型经过超过540万次迭代,专门优化了对头发、手、眼睛等复杂区域的识别。文章详细介绍了从可靠渠道下载、环境部署、使用DF_ICE工具批量应用遮罩,到利用XSeg Editor进行高精度精修的全流程,旨在帮助用户显著提升AI换脸合成视频的质量与效率。

y2z3a4b5c的博客 1165

31、双相不锈钢直齿轮加工与性能研究及人工神经网络在焊接中的应用

本文研究了双相不锈钢直齿轮在不同加工方法(WEDM与滚齿加工)下的磨损行为,分析了表面粗糙度、齿厚变化、磨损率及润滑性能随转速的变化规律,并对比了两种工艺的优劣。同时,探讨了人工神经网络(ANN)在AA7050铝合金搅拌摩擦焊中的应用,通过建立工艺参数与焊接质量之间的预测模型,实现了对焊缝硬度和峰值温度的准确预测。研究为高性能齿轮制造和铝合金焊接提供了理论支持和技术参考,并提出了未来在润滑优化、加工工艺改进及智能控制方面的研究方向。

ggg99的专栏 150

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: openfire源码导入eclipse中
怀之若谷
博客等级 码龄14年 4粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值