主要实现的是高级查询面板向后台传递参数,自动装配,进行查询。高级查询面板的代码如下:
var searchForm = new Ext.FormPanel({
labelWidth : 35,
layout : 'column',
floating : false,
bodyStyle : 'padding:5px 5px 0',
draggable : false,
defaults : {
width : 230
},
defaultType : 'textfield',
items : [{
fieldLabel : '用户名',
name : 'username',
allowBlank : true,
emptyText : "请输入用户名",
id : 'username'
}, {
fieldLabel : '昵称',
name : 'nickname',
allowBlank : true,
emptyText : "请输入用户昵称",
id : 'nickname'
}, {
xtype : 'combobox',
fieldLabel : '性别',
emptyText : '请选择操作员性别',
store : store_sex,
displayField : 'text',
valueField : 'sex',
name : 'sex',
id : 'sex',
allowBlank : true
}, {
fieldLabel : '注册时间从',
name : 'registDate',
xtype : 'datefield',
readOnly : false,
format : 'Y-m-d H:i:s',
allowBlank : true,
id : 'registDateFrom'
}, {
fieldLabel : '到',
name : 'registDate',
xtype : 'datefield',
readOnly : false,
format : 'Y-m-d H:i:s',
allowBlank : true,
id : 'registDateTo'
}],
buttons : [{
text : '查询',
type : 'submit',
handler : function() {
store.on('beforeload', function() {
store.proxy.extraParams = {
username_LIKE_STRING : Ext.getCmp('username')
.getValue(),
nickname_LIKE_STRING : Ext.getCmp('nickname')
.getValue(),
sex_EQ_INT : Ext.getCmp('sex').getValue(),
registDate_GT_DATE : Ext.getCmp('registDateFrom')
.getValue(),
registDate_LT_DATE : Ext.getCmp('registDateTo')
.getValue()
};
});
store.load({
params : {
start : 0,
limit : 10
}
});
}
}, {
text : '重置',
handler : function() {
searchForm.getForm().reset();
}
}]
}).render("admindata");
/**
* 装配参数hql语句
*
* @param entity
* @return
* @throws ParseException
*/
public String completeHQL(String entity) throws ParseException {
String hql = " where ";
Enumeration params = (Enumeration) this.servletRequest
.getParameterNames();
while (params.hasMoreElements()) {
String param = (String) params.nextElement();
if (param.contains("_")) {
String[] array = param.split("_");
String paramname = "";
String action = "";
String type = "";
if (array.length == 3) {
paramname = array[0];
action = array[1];
type = array[2];
}
if (array.length == 4) {
paramname = array[0] + "." + array[1];
action = array[2];
type = array[3];
}
if (Util.isValidSring(paramname) && Util.isValidSring(action)
&& Util.isValidSring(type)) {
String paramvalue = this.servletRequest.getParameter(param);
if (Util.isValidSring(paramvalue) == true) {
String g = this.completeFormula(action);
hql += " " + entity + "." + paramname + g;
if (g.equals(" like ")) {
paramvalue = "%" + paramvalue + "%";
}
if (type.equals("DATE")) {
hql += "'"
+ DateUtil.formatDate(DateFormat
.getDateInstance()
.parse(paramvalue)) + "'" + " and ";
} else {
hql += "'" + paramvalue + "'" + " and ";
}
}
}
}
}
hql += "1=1";
return hql;
}
/**
* 匹配公式符号
*
* @param f
* @return
*/
public String completeFormula(String f) {
if (f.equals("LIKE")) {
return " like ";
}
if (f.equals("GT")) {
return " > ";
}
if (f.equals("LT")) {
return " < ";
}
if (f.equals("EQ")) {
return " = ";
} else {
return "";
}
}
/**
* 获取管理员信息
*
* @throws ParseException
* @throws NumberFormatException
*/
public void infos() throws NumberFormatException, ParseException {
// 参数
String limit = this.servletRequest.getParameter("limit");
String page = this.servletRequest.getParameter("page");
int st = (Integer.parseInt(page) - 1) * Integer.parseInt(limit);
// 查询结果
Result result = this.service.find("from AdminUser u "
+ this.completeHQL("u") + " order by u.createDate desc",
new String[] {}, st, Integer.parseInt(limit));
int total = this.service.count("select count(*) from AdminUser u "
+ this.completeHQL("u") + "");
// 得到管理员信息
List<AdminUser> list = (List<AdminUser>) result.getData();
// JSON声明
JSONArray jsonArray = new JSONArray();
JSONObject jsono = new JSONObject();
// 拼写JSON字符串
for (AdminUser a : (List<AdminUser>) list) {
jsono.put("id", a.getId());
jsono.put("username", a.getUsername());
jsono.put("createDate", DateUtil.formatDate(a.getCreateDate()));
jsono.put("registDate", DateUtil.formatDate(a.getRegistDate()));
jsono.put("sex", a.getSex());
jsonArray.add(jsono);
jsono.clear();
}
JSONObject j = new JSONObject();
// 设置回传参数
j.put("totalCount", total);
j.put("items", jsonArray);
j.put("start", st);
j.put("limit", limit);
// 回传
JsonResult.json(j.toString(), servletResponse);
}
public class DateUtil {
private static final SimpleDateFormat formatter = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
public static synchronized String formatDate(Date date) {
return formatter.format(date);
}
}
public static Boolean isValidSring(String str) {
if (!str.equals("") && str != null) {
return true;
} else {
return false;
}
}
var searchForm = new Ext.FormPanel({
labelWidth : 35,
layout : 'column',
floating : false,
bodyStyle : 'padding:5px 5px 0',
draggable : false,
defaults : {
width : 230
},
defaultType : 'textfield',
items : [{
fieldLabel : '用户名',
name : 'username',
allowBlank : true,
emptyText : "请输入用户名",
id : 'username'
}, {
fieldLabel : '昵称',
name : 'nickname',
allowBlank : true,
emptyText : "请输入用户昵称",
id : 'nickname'
}, {
xtype : 'combobox',
fieldLabel : '性别',
emptyText : '请选择操作员性别',
store : store_sex,
displayField : 'text',
valueField : 'sex',
name : 'sex',
id : 'sex',
allowBlank : true
}, {
fieldLabel : '注册时间从',
name : 'registDate',
xtype : 'datefield',
readOnly : false,
format : 'Y-m-d H:i:s',
allowBlank : true,
id : 'registDateFrom'
}, {
fieldLabel : '到',
name : 'registDate',
xtype : 'datefield',
readOnly : false,
format : 'Y-m-d H:i:s',
allowBlank : true,
id : 'registDateTo'
}],
buttons : [{
text : '查询',
type : 'submit',
handler : function() {
store.on('beforeload', function() {
store.proxy.extraParams = {
username_LIKE_STRING : Ext.getCmp('username')
.getValue(),
nickname_LIKE_STRING : Ext.getCmp('nickname')
.getValue(),
sex_EQ_INT : Ext.getCmp('sex').getValue(),
registDate_GT_DATE : Ext.getCmp('registDateFrom')
.getValue(),
registDate_LT_DATE : Ext.getCmp('registDateTo')
.getValue()
};
});
store.load({
params : {
start : 0,
limit : 10
}
});
}
}, {
text : '重置',
handler : function() {
searchForm.getForm().reset();
}
}]
}).render("admindata");