jQuery EasyUI + struts2.3 + mongoDB 列表查询翻页JAVA样例
列表界面:
主要实现方式:前台组合json格式查询条件,提交至后台解析处理
一.前台搜索脚本
String.prototype.replaceAll = function (s1, s2) {
return this.replace(new RegExp(s1,"gm"),s2);
};
function doMongoSearch(){
var whereCond = new Object();
$("input[query],select[query]").each(function (index, domEle) {
var type = $(domEle).attr('type');
var query = $(domEle).attr('query').toUpperCase();
var name = $(domEle).attr('name');
var value = $(domEle).attr('value');
var checked = $(domEle).attr('checked');
var classVal = $(domEle).attr('class');
if (classVal != undefined){
if (classVal.indexOf("easyui-combobox") != -1){
value = $(domEle).combobox('getValue');
name = $(domEle).attr('id');
type = "text";
}else if (classVal.indexOf("easyui-datebox") != -1){
value = $(domEle).datebox('getValue');
name = $(domEle).attr('id');
type = "text";
}else if (classVal.indexOf("easyui-numberbox") != -1){
value = $(domEle).numberbox('getValue');
name = $(domEle).attr('id');
type = "text";
}
}
if((type =="text" || type=="select-one" || type=="hidden") && value != ""){
if (query == "BEGIN_DATE"){
whereCond["B$_"+name] = ">=@" + value.replaceAll("-","");
}else if (query == "END_DATE"){
whereCond["E$_"+name] = "<=@" + value.replaceAll("-","");
}else if (query == "BEGIN_TIME"){
whereCond["B$_"+name] = ">=@" + value.replaceAll("-","")+ "000000000";
}else if (query == "END_TIME"){
whereCond["E$_"+name] = "<=@" + value.replaceAll("-","")+ "235959999";
}else{
whereCond[name] = query + "@" + value;
}
} else if ((type=="checkbox" || type=="radio") && checked){
whereCond[name] = query + "@" + value;
}
});
var queryParams = $('#list_data').datagrid('options').queryParams;
queryParams.whereCond = JSON.stringify(whereCond);
$('#list_data').datagrid('getPager').pagination('select', 1);
}
/**
* 查询条件清除
* @return
*/
function cleanSearch(){
$("input[query],select[query]").each(function (index, domEle) {
var type = $(domEle).attr('type');
var classVal = $(domEle).attr('class');
if(type == undefined || type =="text" || type=="select-one"){
if (classVal != undefined){
if (classVal.indexOf("easyui-combobox") != -1){
$(domEle).combobox('clear');
}else if (classVal.indexOf("easyui-datebox") != -1){
$(domEle).datebox('clear');
}else if (classVal.indexOf("easyui-numberbox") != -1){
$(domEle).numberbox('clear');
}else{
$(domEle).val("");
}
}else{
$(domEle).val("");
}
}else if(type =="checkbox" || type=="radio"){
$(domEle).attr("checked",false);
}
});
}
二.前台html关键代码
<div class="easyui-layout" data-options="fit:true">
<div data-options="region:'center',border:false" style="padding:1px;">
<table >
<tr>
<td>手机号码:</td>
<td><input type="text" name="mobile" query="LIKE" style="width: 100px;" ></td>
</tr>
<tr>
<td>运营商:</td>
<td>
<input id="operator" name="operator" query="=INT" class="easyui-combobox" data-options="
valueField:'dictValue',
textField:'opName',
width:100,
url:'/manage/dict.do?action=loadValueName&bean.opId=yys&bean.dictLevel=2'"/>
</td>
</tr>
<tr>
<td>归属省:</td>
<td>
<input id="province" name="province" query="=" class="easyui-combobox" data-options="
valueField:'opId',
textField:'opName',
width:100,
url:'/manage/dict.do?action=loadIdName&bean.opId=cn&bean.dictLevel=2',
onSelect: function(node){
var url = '/manage/dict.do?action=loadIdName&bean.opId='+node.opId;
$('#city').combobox('clear');
$('#city').combobox('reload', url);
}"/>
</td>
</tr>
<tr>
<td>归属市:</td>
<td>
<input id="city" name="city" query="=" class="easyui-combobox"
data-options="valueField:'opId',textField:'opName',width:100" />
</td>
</tr>
<tr>
<td>号码来源:</td>
<td>
<input id="source" name="source" query="=INT" class="easyui-combobox" data-options="
valueField:'opId',
textField:'siteName',
width:100,
url:'/manage/mobilesite.do?action=loadSourceName'
"/>
</td>
</tr>
<tr>
<td >发布日期从</td>
<td><input type="text" name="publish" id="publish" class="easyui-datebox" query="BEGIN_DATE" style="width: 100px;" ></td>
</tr>
<tr>
<td align="right">至</td>
<td><input type="text" name="publish" id="publish" class="easyui-datebox" query="END_DATE" style="width: 100px;" ></td>
</tr>
</table>
</div>
<div data-options="region:'south',border:false" style="text-align: center; height: 30px; line-height:10px;">
<a class="easyui-linkbutton" data-options="iconCls:'icon-search'" href="javascript:void(doMongoSearch())">搜索</a>
<a class="easyui-linkbutton" data-options="iconCls:'icon-no'" href="javascript:void(cleanSearch())">清空</a>
</div>
</div>
三.后台action方法
public String doPage() {
pageData = new BN_Page("_id", "t_mobile_all", rows, page, sort, order, whereCond);
pageData = DAO_MobileQuery.getPage(pageData);
Map<String, Object> jsonMap = new HashMap<String, Object>();//定义map
jsonMap.put("total",pageData.getRowCount());
jsonMap.put("rows", pageData.getData());
jsonResult =JSONObject.fromObject(jsonMap);
return "doJSON";
}
后台DAO_MobileQuery方法
public static BN_Page getPage(BN_Page page) {
return new DAOMongo().doSelectPage(page, BN_Mobile.class);
}
后台BN_Page.java关键代码
private ArrayList data = new ArrayList();
private int rows = 15;
private int page = 1;
private String whereCond = "";
private int rowCount;
private String tableName = null;
private String sort = "";
private String order = "";
public BN_Page(String keyColumn, String tableName, String rows, String page,
String sort, String order, String whereCond)
{
this.keyColumn = keyColumn;
this.tableName = tableName;
this.rows = Integer.parseInt(rows);
this.page = Integer.parseInt(page);
this.sort = sort;
this.order = order;
this.whereCond = whereCond;
}
.....常规get/set 方法
后台DAOMongo.java关键方法
public BN_Page doSelectPage(BN_Page page, Class beanClass){
DBCollection connection = db.getCollection(page.getTableName());
DBObject queryObject = new BasicDBObject();
if (!ObjectUtil.isNull(page.getWhereCond())){
logger.info("whereCond="+page.getWhereCond());
List<Map<String, Object>> whereCondList = JsonUtil.json2List("["+page.getWhereCond()+"]");
Map<String, Object> map = whereCondList.get(0);
Set<String> set = map.keySet();
for (Iterator<String> it = set.iterator();it.hasNext();) {
String queryColumn = it.next();
String queryValue = map.get(queryColumn).toString();
if (queryColumn.startsWith("B$_") || queryColumn.startsWith("E$_")){
queryColumn = queryColumn.substring(3);
}
if (queryValue.startsWith("LIKE@")){
queryObject.put(queryColumn,
Pattern.compile("^.*"+queryValue.substring(5)+".*$", Pattern.CASE_INSENSITIVE));
}else if (queryValue.startsWith("=@")){
queryObject.put(queryColumn, queryValue.substring(2));
}else if (queryValue.startsWith("=INT@")){
queryObject.put(queryColumn, new Integer(queryValue.substring(5)).intValue());
}else if (queryValue.startsWith(">@")){
if (queryObject.containsField(queryColumn)){
((BasicDBObject)queryObject.get(queryColumn)).append("$gt",queryValue.substring(2));
}else{
queryObject.put(queryColumn, new BasicDBObject("$gt",queryValue.substring(2)));
}
}else if (queryValue.startsWith(">INT@")){
if (queryObject.containsField(queryColumn)){
((BasicDBObject)queryObject.get(queryColumn)).append("$gt",new Integer(queryValue.substring(5)).intValue());
}else{
queryObject.put(queryColumn, new BasicDBObject("$gt",new Integer(queryValue.substring(5)).intValue()));
}
}else if (queryValue.startsWith(">=@")){
if (queryObject.containsField(queryColumn)){
((BasicDBObject)queryObject.get(queryColumn)).append("$gte",queryValue.substring(3));
}else{
queryObject.put(queryColumn, new BasicDBObject("$gte",queryValue.substring(3)));
}
}else if (queryValue.startsWith(">=INT@")){
if (queryObject.containsField(queryColumn)){
((BasicDBObject)queryObject.get(queryColumn)).append("$gte",new Integer(queryValue.substring(6)).intValue());
}else{
queryObject.put(queryColumn, new BasicDBObject("$gte",new Integer(queryValue.substring(6)).intValue()));
}
}else if (queryValue.startsWith("<@")){
if (queryObject.containsField(queryColumn)){
((BasicDBObject)queryObject.get(queryColumn)).append("$lt",queryValue.substring(2));
}else{
queryObject.put(queryColumn, new BasicDBObject("$lt",queryValue.substring(2)));
}
}else if (queryValue.startsWith("<INT@")){
if (queryObject.containsField(queryColumn)){
((BasicDBObject)queryObject.get(queryColumn)).append("$lt",new Integer(queryValue.substring(5)).intValue());
}else{
queryObject.put(queryColumn, new BasicDBObject("$lt",new Integer(queryValue.substring(5)).intValue()));
}
}else if (queryValue.startsWith("<=@")){
if (queryObject.containsField(queryColumn)){
((BasicDBObject)queryObject.get(queryColumn)).append("$lte",queryValue.substring(3));
}else{
queryObject.put(queryColumn, new BasicDBObject("$lte",queryValue.substring(3)));
}
}else if (queryValue.startsWith("<=INT@")){
if (queryObject.containsField(queryColumn)){
((BasicDBObject)queryObject.get(queryColumn)).append("$lte",new Integer(queryValue.substring(6)).intValue());
}else{
queryObject.put(queryColumn, new BasicDBObject("$lte",new Integer(queryValue.substring(6)).intValue()));
}
}else if (queryValue.startsWith("!=@")){
queryObject.put(queryColumn, new BasicDBObject("$ne",queryValue.substring(3)));
}else if (queryValue.startsWith("!=INT@")){
queryObject.put(queryColumn, new BasicDBObject("$ne",new Integer(queryValue.substring(6)).intValue()));
}
}
}
DBObject sortObject = new BasicDBObject();
sortObject.put(page.getSort(), page.getOrder().equals("asc")? 1 : -1);
logger.info("collection="+page.getTableName());
logger.info("queryObject="+queryObject.toString());
logger.info("sortObject="+sortObject.toString());
logger.info("limit="+page.getRows());
logger.info("skip="+page.getRowNo());
DBCursor cursor = connection.find(queryObject);
page.setRowCount(cursor.count());
cursor = cursor.sort(sortObject).limit(page.getRows()).skip(page.getRowNo());
try {
while (cursor.hasNext()){
DBObject object = cursor.next();
BN_Row row = (BN_Row) beanClass.newInstance();
row.columnMap.putAll(object.toMap());
page.addRow(row);
}
} catch (InstantiationException e)
{ // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { cursor.close(); }
db = null;
connection = null;
return page;
}
jQuery EasyUI + struts2.3 + mongoDB 列表查询翻页JAVA样例的更多相关文章
- jQuery easyUI的datagrid,如何在翻页以后仍能记录被选中的行
1.先给出问题解决后的代码 <%@ page language="java" import="java.util.*" pageEncoding=&quo ...
- 【技巧】easyUI的datagrid,如何在翻页以后仍能记录被选中的行
easyUI的datagrid在复选框多选时,如何在翻页以后仍能记录被选中的行: 注意datagrid中需要配置idField属性,一般为数据的主键
- 数据库.MongoDB.Java样例
1.先在MongoDB官网下载Java驱动包 MongoDB Java Driver: http://mongodb.github.io/mongo-java-driver/ JAR包下载列表 htt ...
- JQuery easyUI DataGrid 创建复杂列表头(译)
» Create column groups in DataGrid The easyui DataGrid has ability to group columns, as the followin ...
- jquery+正則表達式验证邮箱格式的样例
js: $("#email").blur(function(){ //获取id相应的元素的值,去掉其左右的空格 var email = $.trim($('#email').val ...
- Web jquery表格组件 JQGrid 的使用 - 5.Pager翻页、搜索、格式化、自定义按钮
系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...
- jquery easyui combogrid Uncaught TypeError:Cannot read property
================================ ©Copyright 蕃薯耀 2020-01-07 https://www.cnblogs.com/fanshuyao/ 一.问题描述 ...
- Flask添加翻页功能(非sqlalchemy)
最近做flask的项目,需要增加翻页的功能,网上找的教程都是结合sqlalchemy的,可是我用的不是sqlalchemy,肿木办呢? 以下是我的做法 一.前端 1.传递页码 前端我使用ajax提交表 ...
- 套用JQuery EasyUI列表显示数据、分页、查询
声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...
随机推荐
- PL/SQL Developer 远程连接Oracle数据库
PL/SQL Developer 远程连接Oracle数据库 网上搜了很多方法,这个可行! 1. 配置服务器tnsnames.ora文件,如果本机上没有安装oracle,可以从安装了oracle ...
- Java基础--继承方法调用顺序
最近因为面试的原因,回过头来复习基础的知识,都忘光了,准备买本面试书回来啃. 我先把自己测试的结论总结写出来,以后忘记再来看看 如果b类继承自a类,在main方法中new出b的对象(不带参数),那么他 ...
- shit-------------mysql没有full join 语句
弄了好久,结果发现-------- 因为mysql没有full join这个东西 你只能写成 sleect * from A left join B on A.id=B.idunionselect * ...
- 3. NHibernate基础知识 - 你必须知道的一些事情
首先介绍一下框架结构(这个有个概念就可以): 然后我们会介绍一个很重要的概念(一定要好看)!! 这节对 NHibernate 架构做一个介绍,首先要了解一下该框架在应用程序中的位置: 先来一个简单的图 ...
- C#将汉字转换成全拼的拼音EcanConvertToCh帮助类 (转)
点击下载 EcanConvertToCh.rar 主要功能就是将汉字转换成全拼的拼音,只要你输入一个汉字就会相应的转成拼音 /// <summary> /// 编 码 人:苏飞 /// 联 ...
- [Excel] CsvHelper---C#关于CSV文件的导入和导出以及转化 (转载)
点击下载 CsvHelper.rar 这个类是关于Csv文件的一些高级操作1.DataTable导出到CSV2.将Csv读入DataTable看下面代码吧 /// <summary> // ...
- sql server split函数
--创建分割函数CREATE FUNCTION dbo.Split(@String varchar(8000),@Delimiter char(1))returns @temptable TABLE ...
- 深入理解shared pool共享池之library cache的library cache pin系列三
关于library cache相关的LATCH非常多,名称差不多,我相信一些人对这些概念还是有些晕,我之前也有些晕,希望此文可以对这些概念有个更为清晰的理解,本文主要学习library cache p ...
- Object-C — KVO & oc通知
键值观察(KVO)是基于键值编码的一种技术. 利用键值观察可以注册成为一个对象的观察者,在该对象的某个属性变化时收到通知. 被观察对象需要编写符合KVC标准的存取方法,编写键值观察分为以下三步: (1 ...
- Spring回顾
1.IOC和DI IOC:Inversion of Control(控制反转)是一个重要的面对对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心. IOC理解:将组件对象的控 ...