使用JQGrid表格插件搜索功能

jqgrid的内置功能较为强大,使用起来也稍显麻烦,今天我尝试在项目中集成了JQGrid的表格搜索功能,开发环境时Spring MVC + Spring + Hibernate。

Jqgrid搜索框

苦于技术不好,在使用过程中遇到了几个麻烦,花了一天时间才勉强可以使用,但是还有很多可以改进的地方,望大家多多指教。

1、如何将数据格式传递到后台。

JQGrid在向后台传递数据时的JSON格式如下:

_search:true
nd:1455791087276
rows:15
page:1
sidx:
sord:asc
filters:{
    "groupOp":"AND",
    "rules":[
        {"field":"id_integer","op":"gt","data":"1"},
        {"field":"numberOfPeople_integer","op":"gt","data":"5"},
        {"field":"contacts_string","op":"cn","data":"李"}
    ]
}
searchField:
searchString:
searchOper:
`

`
我在后台定义了一个基类,让所有需要需要使用JQGrid表格的实体类都继承该类,实现通用的搜索方法,类中的主要属性如下:

`
public static enum SortType{
asc, desc
}
public static enum GroupType{
OR, AND
}
public static enum OperationType{
eq, ne, lt, le, gt, ge, bw, bn, in, ni, ew, en, cn, nc
}
public static enum DataType{
integer, string, date
}

public class Rule{
    private String field;//查询条件列名
    private OperationType op;//条件类型
    private Object data;//查询数据
    private DataType dataType;//查询数据类型
}
public class Filter{
    private GroupType groupOp;//条件组合类型
    private List rules; //条件集合        
}

private String sidx;//需要排序列名
private SortType sord;//排序类型
private Filter filtersObject;//查询条件对象
private String filters;//查询条件JSON字符串

但是我对于Spring MVC的绑定并不熟悉,所以采用了自行解析JSON为对象的方式,但是却无法获取data的数据类型,查找JQGrid官方文档并没有发现在rules中插入一条属性的方式,所以又采用了土办法:在field属性中加入“_数据类型”并在后台转换数据类型。

我猜测这个问题更简单的解决方为:1.使用反射获取相应对象的数据类型。2在rules中插入一条属性记录数据类型。还是上网查查有没有更好的解决方案。