DhtmlXGrid适配器

发表于1年前(Dec 15, 2016 12:07:59 PM)  阅读 896  评论 0

分类: WEB前端 JS

标签: bootstrap-table DhtmlXGrid DHtmlXGridJsonAdapter 适配器

DHX是一个国外的javascript库,包括了很多javscript插件,数据方面有关的就包括Chart、Tree、DataView、TreeGrid、Grid、TreeView、List。其中Grid算是用得比较多的了。

DhtmlXGrid有几个缺点,一般来说,都是后台组装好需要的xml数据,返回给前台使用,后台代码跟前台绑定太紧密,前台需要哪些字段,显示顺序是什么,后台都得事先考虑好。如果前台展示的顺序变了,后台代码也得跟着修改。对于不用显示,但后续操作可能需要用到的字段,像数据的主键这种,后台需要返回,前台通过设置隐藏实现,如果需要增加显示的字段,后台就也得改代码,非常不方便。

现在主流用的表格插件bootstrap-table提供的API就很好使用,这里笔者习惯了使用bootstrap-table,碰到项目需要使用DhtmlXGrid各种不爽,于是写了一个适配器,可以使用类bootstrap-table API的调用方式来生成DhtmlXGrid代码。

 

......

审核状态机-状态模式的应用

发表于1年前(Dec 14, 2016 8:54:35 PM)  阅读 2044  评论 0

分类: Java

标签: 审核状态机 状态模式 多层审核机制

1、前言

简单描述一下状态模式:

状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。

这里笔者实现一个审核状态机,主要流程是,用户申请审核,审核人员进行审核通过或者拒绝操作,允许用户取消审核申请。这是常用的一个业务流程,用户可以根据实际情况修改。

2、状态

首先,找出所有的状态,如下图:

NullState主要是初始化的时候给的状态。PassEndState主要是为了应对后面的多层审核机制而加上的,因为管理比较严的流程经常需要进行多层审核。

3、方法

......

Hibernate5关于主键生成策略的变化

发表于1年前(Dec 11, 2016 12:03:52 PM)  阅读 1037  评论 0

分类: Java

标签: hibernate5 主键生成策略 GenerationType IdGeneratorStrategyInterpreter FallbackInterpreter LegacyFallbackInterpreter hibernate.id.new_generator_mappings

最近在研究springboot,现在最新稳定版本为1.4.2,里面使用的hibernate版本已经升级到5.0.11,搭了个框架,发现几个问题,记录一下。

网上有很多介绍hibernate5新特性的文章,千篇一律,估计都是出自一人手中,其中有一点就是说hibernate5扩展了Auto id的生成支持:

JPA定义的GenerationType.AUTO属性仅支持数字类型.从5.0开始,hibernate高度扩展并支持更广泛的类型,包括内置支持数字类型(如整型(Integer)\长整型(Long))和UUID.通过新的拓展类org.hibernate.boot.model.IdGeneratorStrategyInterpreter,用户还能自由地定制自己的策略来使用GenerationType.AUTO

用过JPA的都知道,JPA提供的四种策略来生成主键,用法为TABLE,SEQUENCE,IDENTITY,AUTO. 

......

jQuery使用data方法获取DOM绑定事件

发表于1年前(Nov 23, 2016 8:57:30 PM)  阅读 690  评论 0

分类: WEB前端 JS

标签: data _data event

jQuery在1.8版本前,可以使用如下代码获取DOM元素绑定事件:

$.data(domObj,'events');//或者$('selector').data('events')

1.8版本以后:

$._data(domObj,'events');//注意,这里不能像$('selector')._data('events')这样用了。

使用下面的写法可以兼容各个版本:

var eventsData = $.data(domObj,'events') || $._data(domObj,'events');

bootstrap-table复选框增加默认值

发表于1年前(Nov 20, 2016 12:09:48 AM)  阅读 3208  评论 0

分类: WEB前端 JS

标签: bootstrap-table checkbox formatter

bootstrap-table可以通过使用{field: 'state',checkbox: true}来设置某列显示为checkbox复选框,而我们有时需要在数据列表初始化的同时初始化checkbox的选中状态,这时可以通过增加formatter函数来实现{field: 'state',checkbox: true,formatter:stateFormatter}。

function stateFormatter(value, row, index) {
        if (some coditon) {
            return {
                disabled: true,
                checked: true
            };
        }
        return value;
    }

在stat

......

设置一周第一天从星期一开始

发表于1年前(Nov 19, 2016 9:35:39 PM)  阅读 1667  评论 0

分类: Java

标签: Calendar setFirstDayOfWeek

也许你碰到过这种业务,需要根据星期几来做某种操作,例如,每周二,上周二等。Java提供了Calendar类可以实现这些需求,不过这里有个坑,值得注意。

国外都是以星期日作为每周的第一天,而我们都是以周一作为第一天,所以如果你不注意的话,在周日的时候获取上周的某个星期几,或者这周的某个星期几就会出现错误。因为Java就是默认以星期日作为一周的第一天。还好Calendar提供了接口,修改这个配置。

Calendar c = Calendar.getInstance();c.setFirstDayOfWeek(Calendar.MONDAY);

这样,Calendar就是以周一作

......

hibernate-validator在windows服务器下和weblogic冲突

发表于2年前(Sep 14, 2016 5:17:08 PM)  阅读 677  评论 0

分类: 开发运维环境

标签: hibernate-validator和weglogic冲突 traversableResolver

1、weblogic错误日志

2、错误原因

具体怎么找到错误原因的不说了,最终确认是因为项目中的hibernate-validator库和weblogic冲突导致的。hibernate-validator版本为5.2.4.Final,尝试过升级或降级hibernate-validator版本均失败,hibernate使用的是4.3.8。

3、解决办法

ajax load content .ready

发表于2年前(Jul 12, 2016 11:07:51 AM)  阅读 799  评论 0

分类: WEB前端 JS

标签: load .ready

ajax load方法是常用的加载页面的方法,特别是对于SPA单页面应用来说,几乎每个应用都是通过ajax load进行展示的。document.ready方法也是经常使用的方法,document.ready方法将会在document的dom元素加载完成的时候执行。ajax load和document.ready两者结合在一起会发生什么事呢。

假设有A,B两个页面,A页面ajax load B页面,B页面想在页面内容加载完,即document.ready事件里面执行一段方法,能正常执行成功吗。

这时候,结果取决于B页面的元素内容,B页面是一个新的document,还是原来的document。如果是一个新的document,即页面内容包含html节点,document.ready会正常执行,因为这个document是当前新的document。如果当前页面没有包含html节点,document.ready方法会立马执行,因为这个document是旧的document,而旧的document早已ready,所以这时候可能就不是你期望的执行顺序了。

......

maven部署jar包到nexus私服

发表于2年前(Jul 6, 2016 10:19:07 AM)  阅读 736  评论 0

分类: 开发运维环境

标签: maven nexus deploy

1、修改setting.xml

<server>
		<id>releases</id>
		<username>admin</username>
		<password>admin123</password>
	</server>
	<server>
		<id>snapshots</id>
		<username>admin</username>
		<password>admin123</password>
	</server>

2、修改pom.xml

<distributionManagement>
		
......

使用AOP的方式修改第三方jar包中的源码

发表于2年前(Jul 5, 2016 5:03:49 PM)  阅读 1038  评论 0

分类: Java

标签: AOP 拦截器 修改源码 类加载 切面

一个好的工具库,一般都会提供灵活的接口给用户进行修改和扩展,但还是会有没有考虑的情况,或者总有原因会促使我们去修改源码。这里,笔者主要是面对需要修改源码中一个类的一个方法的情况,其他情况都可以类似解决,只是复杂度的问题。

修改源码有几种方式,我们可以将修改编译后的class文件,替换原来jar包里面的class文件,这种方法不推荐使用。还一种办法就是在自己项目工程里面加入新的同名,同包的类,这样虚拟机会优先加载项目中的class,这是一种比较好的方式。不过这种方式有些情况也不适用,如自己发布了一个jar包,里面有一个class就是修改的第三方jar包源码,这时,很有可能编译或者运行时加载的class就不是你需要的那个class了。如果运行时加载的class不是你所需要的class,我们还可以通过配置启动命令,指定优先加载的jar包来修改类加载顺序,我们在weblogic使用jpa2.0的时候,经常需要修改优先加载的jar包。这样问题解决了,但是需要后期部署做一些额外操作,所以也不算完美。

最完美的方式就是使用aop机制。使用aop机制,我们

......