很强大的jsp手写分页插件 实现json 等一些ajax技术 联合查询 模糊查询 条件查询

阅读更多
这个插件里面分页功能很强大,调用者只需赋几个值就可以了。

下面是ticket.jsp 全代码:


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
[color=red][/color] 
<%@page import="com.pojos.TbLog"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>



















<%-- 查询表单与结果显示区 -start--%>
订单号 订单状态 订票时间
航班号 舱位 出票完成时间
乘机人姓名 票号 PNR 联系人手机号
出发城市 到达城市 航班公司 航班时间 航程类型
出票员 录入员
[color=red]<%-- 查询表单与结果显示区 -end--%>[/color][color=red][b] [/b][/color]



分页 Action 代码:
   
//得到页面传递name值
 	Map param = new HashMap();
		
		for(Enumeration e  =  request.getParameterNames(); e.hasMoreElements();){
			String key = (String)e.nextElement();
			System.out.println(key);
			if(!"p".equals(key)&& !"isSendPage".equals(key)) { //p 我也没搞清是什么作用 还没测试 不过这样可以通过
				String value = (String)request.getParameter(key);
				param.put(key, value);
			}
		}
//注意 map 的键必须是pojo 对象的属性
Nam qneOrderList = qne_OrderService.qneOrderSearchMap(param);
request.setAttribute("qneOrderList", qneOrderList);
		request.setAttribute("sum", qneOrderList.remove(qneOrderList.size()-1)); //返回每页都数据
//在需加这段代码不要改动如下,之前不加分页时候第二页又是从1开始到最大条数
request.setAttribute("rowStart", request.getParameter("rowStart"));



action中 方法也可以这样写:
引用

Map requestParaMap = filterRequestParameter(request);
在dao里面 创建stringBuffer 对象 获得map中的值 看是否为空,不为空则 append 。为hql语句。可以看这个:http://yzz9i.iteye.com/admin/blogs/1141648


分页Dao 代码:
//这个方法你也看得懂是干嘛的
private String getWhereContent2(Map param) {
		StringBuilder sb = new StringBuilder();
		for (Iterator iterator = param.keySet().iterator(); iterator
				.hasNext();) {
			String key = iterator.next(); //红色部分不需要改动 都是在插件里面配好了的(有需要可以改js)
			if ([color=red]key != null && !"".equals(key) && !"col".equals(key)
					&& !"order".equals(key) && !"rowStart".equals(key)
					&& !"pageSize".equals(key)[/color]) {
				if (param.get(key) != null && !"".equals(param.get(key))) {
                                     [color=darkred]// 这下面部分if里面的条件是你要进行完全搜索的字段 不需要完全搜索的key 会进行下面的else条件 进行%xxx% 式 搜索[/color]
					if ([color=red]"orderNum".equals(key) || "orderStatus".equals(key)
							|| "flightNum".equals(key) || "cabin".equals(key)
							|| "ticketNum".equals(key) || "pnr".equals(key)
							|| "linkmanCellPhone".equals(key)
							|| "startCity".equals(key) || "endCity".equals(key)
							|| "flightCompany".equals(key)
							|| "voyageType".equals(key)
							|| "linkmanCellPhone".equals(key)[/color]) {
						sb.append(" t." + key + " = '" + param.get(key)
								+ "' and ");
					} else {
						sb.append(" t." + key + " like '%" + param.get(key)
								+ "%' and ");
					}
				}
			}
		}

		if (!"".equals(sb.toString())) {
			sb.insert(0, " where(");
			sb.delete(sb.lastIndexOf("and"), sb.length());
			sb.append(") ");
		}
		return sb.toString();
	}

	@SuppressWarnings("unchecked")
	public List qneOrderSearchMap(Map param) {
		System.out.println("---- -----");
		if (null == param || param.isEmpty()) {
			return null;
		}
[color=red]// rowStart pageSize 在插件里面配好了 默认是 0  50  不需改动[/color]
		[color=red]int rowStart = Integer.parseInt(param.get("rowStart"));
		int pageSize = Integer.parseInt(param.get("pageSize"));[/color]

[color=red]// col order 在插件里面配好了 key值便是刚才在ticket.jsp 脚本中所配的   sortCol : [ 'time', 'asc' ][/color]		
		[color=red]String col = param.get("col");   
		String order = param.get("order");[/color]
		boolean b = rowStart >= 0 && pageSize > 0;
		String w = getWhereContent2(param);
		String orderStr = ((null != col && !"".equals(col) && null != order && !""
				.equals(order)) ? "order by t." + col + " " + order : "");
		String hql = "from QNEOrder as t " + w + orderStr;
		String countSql = "select count(*) from QNEOrder as t" + w;
		System.out.println(hql);
		Session session = getSession();
		Query query = session.createQuery(hql);
		List list = null;
		if (b) {
			query.setFirstResult(rowStart);
			query.setMaxResults(pageSize);
		}
		System.out.println("hql=" + hql);
		list = query.list();
		if (b) {
			// 查总记录数
			List l = session.createQuery(countSql).list();
			list.add(l.get(0));
		}
		System.out.println("size:" + list.size());
		System.out.println("222");

		return list;
	}




分页 一个接收查询结果的rest.jsp   :
引用


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

<%--ss--%>
<%----%>


${rowStart+vs.index+1}

${qlist.orderNum }


未出票申请退款
订座成功待价格确认
待座位确认
订座成功待支付
订单取消
支付成功待出票
出票中
出票完成
改签申请中
改签完成
退票申请中
退票完成待退款
退票完成
待出保订单



timeStyle="medium" />
${qlist.startCity }



timeStyle="medium" />
${qlist.endCity }


${qlist.flightNum }









${qlist.onTicketPrice }


${qlist.drawer }





修改
详情
删除
<%-- --%>










先说到这儿,分页就可以实现了,而已还有ajax 获取值绑定在select中哦。
ajax 获取值绑定在select中用到的Action方法:
public ActionForward getUsersByPurviewValues(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		String pvs = request.getParameter("purviewValues");
		String[] pvArr = null;
		if(pvs != null) {
			pvArr = pvs.split(",");
		}
        String json = iUserSetService.getUsersByPurviewValues(pvArr);
        PrintWriter pw = response.getWriter();
		pw.print(json);
		pw.close();
        return null;
	}


ajax 获取值绑定在select中用到的Dao方法:
/**
	 * 通过权限值得到用户json串
	 * @param pvArr权限值数组
	 * @return
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public String getUsersByPurviewValues2(String[] pvArr) throws Exception {
		String orS = MyUtils.getOrStr(pvArr, "p.value", true);
		String temp = orS.length()>0?" WHERE "+orS:"";
		String sql ="SELECT"+ 
					"	h.handlerID,h.name,p.value "+
					"FROM "+
					"	tb_handler h "+
					"	INNER JOIN tb_group g ON h.group_id=g.id "+
					"	LEFT OUTER JOIN tb_group_purview gp ON g.id=gp.group_id "+
					"	INNER JOIN tb_purview p ON p.id=gp.purview_id "+
					temp+
					"UNION "+
					"SELECT "+
					"	h.handlerID,h.name,p.value "+
					"FROM "+
					"	tb_handler h "+
					"	LEFT OUTER JOIN tb_personal_purview pp ON h.handlerID=pp.hanlder_id "+
					"	INNER JOIN tb_purview p ON p.id=pp.purview_id "+
					temp;
		
		Session session = getSession();
		List l = session.createSQLQuery(sql).list();
		StringBuilder sb = new StringBuilder();
		for (Iterator iterator = l.iterator(); iterator.hasNext();) {
			Object[] o = (Object[]) iterator.next();
			sb.append("{id:'"+ o[0] +"',username:'"+o[1]+"',purviewValue:'"+o[2]+"'},");
		}
		if(!"".equals(sb.toString())) {
			sb.delete(sb.lastIndexOf(","), sb.length());
			sb.insert(0, "[");
			sb.append("]");
		}
		return sb.toString();
	}



好好研究下 一定会让你收获不菲的哦!


  • js分页插件.zip (18.6 KB)
  • 下载次数: 236

你可能感兴趣的:(js分页插件,js实用分页方法,json)