背景:
做项目时涉及到页面。当我打算在controller中传一个list到页面,然后通过<c:foreach>循环遍历出来时,同事说:你这样每次都要刷新。这都是几百年前使用的技术了。你用post实现异步载入数据。然后就......
ResultUtil.java 工具类:
package com.sgcc.uds.fs.config.web.util;import java.util.HashMap;import java.util.Map;import net.sf.json.JSONObject;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class ResultUtil { /** 日志 */ private static Log logger = LogFactory.getLog(ResultUtil.class); // 保存json对象 private Mapcontroller类方法:results; // 消息"key public static final String MSG = "msg"; // 成功标识 key public static final String SUCCESS = "success"; // 单对"key public static final String OBJ = "obj"; // 列表对象 key public static final String ORWS = "rows"; // 总计"key public static final String TOTAL = "total"; // 状" key public static final String STATUS = "status"; public ResultUtil() { this.results = new HashMap (); this.results.put(SUCCESS, true); } public Map getResult() { return this.results; } public void setResult(Map set) { this.results = set; } public boolean getSuccess() { return (Boolean) results.get(SUCCESS); } public String getMessage() { return (String) results.get(MSG); } public void setRows(Object list) { this.results.put(ORWS, list); } public void setTotal(Integer total) { this.results.put(TOTAL, total); } /** * 依据" 自己定义加入属" * * @param key * 属"标识 * @param value */ public void setProperty(String key, Object value) { try { this.results.put(key, value); } catch (RuntimeException e) { logger.error("-->>设置key为:" + key + "值为" + value + " Json时出错:", e); } } /** * 设置状"信息 * * @param status */ public void setStatus(String status) { setProperty(STATUS, status); } /** * 设置成功标志 " 用于程序运行是否正常 * * @param success * 成功标识 */ public void setSuccess(boolean success) { setProperty(SUCCESS, success); } /** * 设置消息 * * @param msg * 消息" */ public void setMsg(String msg) { setProperty(MSG, msg); } /** * 设置总计" * * @param size */ public void setTotal(int size) { setProperty(TOTAL, size); } public void setSize(int size) { setProperty(TOTAL, size); } /** * 加入对象列表 数据为json格式 * * @param data * 对象列表json格式 */ public void setData(String data) { setProperty(ORWS, data); } /** * 加入对象 * * @param obj * 对象 */ public void setObject(Object obj) { setProperty(OBJ, obj); } /** * 返回json格式 */ public String toJSONString() { JSONObject obj = new JSONObject(); obj.put("data", this.results); return obj.toString(); } public static void main(String aregs[]) { ResultUtil util = new ResultUtil(); System.out.println(util.toString()); }}
/** * @return * 载入文件信息 */ @RequestMapping("/file/queryFileInfo") @ResponseBody public MapqueryFileInfo() { ResultUtil result =new ResultUtil(); List fileList =getFileInfo(); if(fileList !=null) { result.setRows(fileList); result.setSize(10); result.setMsg("查询成功!
"); }else { result.setSuccess(false); result.setMsg("载入数据失败!"); } return result.getResult(); }
jsp页面:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";request.setAttribute("home", path);%>jquery方法:-fileMgr.js首页 文件信息列表
权限文件 数量 每日新增 操作
//文件列表$(document).ready(function() { var page=2; var pageSize=10; var pageParam={}; pageParam.page=page; pageParam.pageSize=pageSize; $.post(home+"/file/queryFileInfo",pageParam, function(result) { if(result && result.success) { var obj =result.rows; for ( var i = 0; i < obj.length; i++) { var res =obj[i]; var tr="" + res.bucketName + " " + res.number + " " + res.dailyNew + ""; + "改动" + "删除 "; $(".table").append(tr); } }else { alert(result.msg); } },"json");});这样页面的数据直接在jquery直接加入到表格中。看起来是有点高大上的感觉。