1 区域数据批量导入功能
1.1 页面中引入插件并指定用作导入功能的按钮进行初始化
![](https://img.haomeiwen.com/i5867217/2c4bb9128c0be1d1.png)
![](https://img.haomeiwen.com/i5867217/f1a5fda0d9906a0d.png)
1.2 在RegionAction中提供myFile参数接收页面传入的xls文件并提供importXls方法解析页面传入的xls文件;
![](https://img.haomeiwen.com/i5867217/581fb1d6b95d924f.png)
![](https://img.haomeiwen.com/i5867217/94edcac5dcc8956f.png)
1.3 在RegionServiceImpl中提供saveBatch方法批量保存xls数据到数据库中
![](https://img.haomeiwen.com/i5867217/620d240799b1f945.png)
1.4 在BaseDaoImpl中拓展通用saveOrUpdate方法
![](https://img.haomeiwen.com/i5867217/2871b042f95d28fa.png)
最后测试成功将数据导入数据库截图
![](https://img.haomeiwen.com/i5867217/fa8bd8dcf9679b33.png)
![](https://img.haomeiwen.com/i5867217/2c89b485cd999506.png)
2 使用pinying4J生成简码和城市编码
2.1 导入pinying4J的jar包以及工具类
![](https://img.haomeiwen.com/i5867217/3143817794ce0113.png)
![](https://img.haomeiwen.com/i5867217/7730f6dd7afaa026.png)
2.2 在RegionAction中的importXls方法中添加自动生成简码和城市编码的代码
![](https://img.haomeiwen.com/i5867217/2a7019f4e9dd9dc0.png)
测试成功生成简码和城市编码的截图
![](https://img.haomeiwen.com/i5867217/e9c49d9ae238197c.png)
3 重构分页代码
3.1 将StaffDaoImpl中的分页方法与分页参数抽取到BaseDaoImpl中作为一个通用的分页方法和参数使用
![](https://img.haomeiwen.com/i5867217/f007c8115775c512.png)
![](https://img.haomeiwen.com/i5867217/f0c8b21c6b52c3e7.png)
![](https://img.haomeiwen.com/i5867217/4b1e0de58f38d1c7.png)
3.2 在StaffAction和RegionAction中调用抽取的通用分页查询方法完成各自的分页查询请求
![](https://img.haomeiwen.com/i5867217/5ca6de1077d9baa2.png)
![](https://img.haomeiwen.com/i5867217/21321e978e0055a9.png)
3.3 在region.jsp中修改表格数据请求地址为RegionAction中对应的分页查询方法地址
![](https://img.haomeiwen.com/i5867217/accb58026a722125.png)
4 添加分区功能
4.1 在页面添加分区的窗口设置选择分区所在区域的下拉框数据请求地址
![](https://img.haomeiwen.com/i5867217/c21bc74cc33258fd.png)
4.2 在RegionAction中添加区域列表查询方法并抽取相关代码是到BaseAction中作为一个通用的列表数据查询方法
![](https://img.haomeiwen.com/i5867217/085f85e4da770e9f.png)
![](https://img.haomeiwen.com/i5867217/528fcdd0e7e46756.png)
![](https://img.haomeiwen.com/i5867217/d220485c2afd811f.png)
5 组合条件分页查询分区功能
5.1 给查询分区窗口的查询按钮添加事件,用于处理用户的查询操作。
![](https://img.haomeiwen.com/i5867217/3df9a974fc7e63eb.png)
5.2 在SubareaAction中开发pageQuery分页查询方法,并对相应的查询条件进行处理,最后将查询出的数据调用BaseAction中的通用分页数据转json方法对页面返回相应的json数据。
![](https://img.haomeiwen.com/i5867217/302bcd3187be72d2.png)
6 分区数据导出功能
6.1 在页面给导出按钮绑定事件跳转后台用于处理导出数据的方法
![](https://img.haomeiwen.com/i5867217/761f5ebd0439e67f.png)
6.2 在SubareaAction中开发exportXls方法用于处理导出数据的请求
![](https://img.haomeiwen.com/i5867217/78c3ed5b04c318f8.png)
6.3 测试导出分区数据成功
![](https://img.haomeiwen.com/i5867217/5d120c40c7ca9ba9.png)
![](https://img.haomeiwen.com/i5867217/187d51e17fdeb379.png)
错误日志:
今天早上开发项目的时候启动一直失败,报以下截图中错误。
![](https://img.haomeiwen.com/i5867217/2e54776330208805.png)
随后我在国内的csdn等各大开发者论坛网站到处搜索,把问题锁定在jar冲突和缺少jar包这两个方面。接下来花了一个半小时依旧没找出问题所在,然后我上国外的Stack Overflow搜索问题并一眼看见了和我问题一样的提问。进入之后发现了以下截图中的第一个答案就解决了我的问题,证明是我之前的方向有误,这是jdk版本与项目框架版本冲突导致的。
![](https://img.haomeiwen.com/i5867217/2e9df4cbc1ab9841.png)
如果项目中的jdk版本变成了1.8,而spring和hibernate等框架依旧是3.xx的低版本就会出现这个问题。而这个项目本身就设计的是jdk版本1.7,并且这几天我一直都用的1.7开发没出现问题。而今天突然变成了1.8所以就导致了这种诡异的现象,具体原因我目前大概推算是因为昨天win10下方工具栏失灵点击无效,我在任务管理器重启了资源浏览器。这导致了myeclipse的进程强制结束而不是正常退出,所以也就使工作空间本来设置的jdk版本为1.7被重置成了默认的1.8。
在开发添加分区功能的时候控制台出现下面截图中的错误,并且数据添加失败。
![](https://img.haomeiwen.com/i5867217/e5f31ca3acb33a91.png)
后面确认实体属性名与表单参数名完全对应之后在浏览器中使用开发工具抓取添加分区时发出的网络请求发现导致这个问题出现的原因是请求地址错误,修改为正确的表单提交地址之后成功解决该问题。
在开发分页查询分区中控制台报出以下截图中的错误,并且查询数据失败。
![](https://img.haomeiwen.com/i5867217/e66404902db3e623.png)
![](https://img.haomeiwen.com/i5867217/29c16abaef85c311.png)
之后采取debug的方式明确了错误发生在BaseAction中通用的分页数据转json方法中将对象序列化json的时候,又根据错误信息结尾的空指针异常信息排查到在pageBean对象中的分页数据subArea对象中的一个属性是region对象,而应为hibernate框架默认懒加载返回的region的代理对象,所以region对象内的所有属性值均为空导致序列化json失败。然后在Subarea对象的xml映射文件中在region的标签中加上lazy=false属性后成功解决该问题。
![](https://img.haomeiwen.com/i5867217/817cc4e79bb821f8.png)
网友评论