[Java]使用zip压缩时解决中文文件名乱码问题

Java中java.util.zip包可以处理压缩和解压缩的问题,不过使用java.util.zip包时,如果所压缩的文件中包含中文文件名,会出现乱码,因为ZipOutputStream压缩和解压ZIP文件的时候,对文件名都是以UTF-8编码方式来处理的。当我们使用压缩工具打开压缩文件时,通常采用ASCII编码的方式来处理,会出现由于编码不一致而导致文件名乱码。
结合网上相关资料,处理此中文名乱码的问题通常有两种途径。
第一种,修改java.util.zip包中相关类的源码。
此种方法本人没有测试,此处暂不讨论。有兴趣可以参考:java 解压 Zip文件乱码的问题
第二种,使用ant包下的zip功能。
ant包的下载地址为:ant包下载
本人使用的是1.8.4版本,相关的pom依赖配置为:

使用代码如下(ZipOutputStream可以设置编码方式):
阅读余下全文 »

[ExtJS]获取Grid的列标题数组

项目中,需要动态的获取基于ExtJS框架的Gird中的列标题数组,且细节要求如下:
1.不能包含rownumberer列。
2.不能包含actioncolumn列。
3.通过传参可以方便获取全部列、不包含隐藏列的标题数组。
结合网上零碎的资料,最终实现此功能,代码如下:
阅读余下全文 »

Extjs4.x中grid在checkbox选择模式下实现跨页选中行记录

Extjs框架中,grid在多选模式下,只能获取当前页所选择的记录,分页后当前所选记录由于执行了deselect事件而清除。
项目中,需要实现grid在checkbox选择模式下实现跨页选中行记录的功能。即选中当前页的行记录,在进入其他页的时候,所选记录仍然保留,并且回到有选中记录的页,显示选中状态。
思路大致如下:
1.定义一个集合,存储选中的行记录的关键字段。
2.在checkboxmodel下面监听select事件,实现选择记录的时候,把该记录的关键字段存储至所定义的集合中。
3.在checkboxmodel下面监听deselect事件,实现取消选择记录的时候,把该记录的关键字段移除出所定义的集合中。
4.数据加载的时候,遍历当前页的记录,与所定义集合里的数据比较,如果集合里数据包含了当前页的记录,则显示选中状态。
参考链接:ExtJS4.0中跨页显示checkbox选中状态
由于项目中,多处需要实现上述需求,因此本人把此功能写成一个工具类。
阅读余下全文 »

基于Extjs4.x的日期时间组件

众所周知,Extjs框架没有原生的日期时间组件。项目中使用的日期时间组件一般为开发者扩展的,本人见到的或者使用到的就不下于3种,他们的优缺点暂且不讨论(有机会本人会使用一个专辑来着重讨论几种主流的基于Extjs框架的日期时间组件),下面为大家介绍一种基于Extjs4.x封装的My97DatePicker日期时间组件。
My97DatePicker是一款国内开源的日期时间组件,它的功能非常强大且性能非常棒。唯一不足的,本人觉得对于一款组件来说,它依赖的资源有点多。不过在企业级应用中,这点可以忽略。它的主页:My97DatePciker
经过慎重考虑,选择以它为核心,基于Extjs4.x框架封装起来,并在项目中应用。
效果如下图:
dateTime
阅读余下全文 »

基于Extjs4.x的标准分页工具栏

项目中,为满足UED的设计需求,需要实现基于Extjs4.x的标准分页工具栏。
有无使用必要,暂时不论;性能好坏,也暂且不说。先看效果图(Extjs框架的样式为项目自定义的样式):
s_paging
阅读余下全文 »