zoukankan      html  css  js  c++  java
  • 分页工具类 BaseAction

    package com.xxxxxxx.bos.web.action.common;
    
    import java.io.IOException;
    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.apache.struts2.ServletActionContext;
    import org.springframework.data.domain.Page;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.opensymphony.xwork2.ModelDriven;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    import net.sf.json.JsonConfig;
    
    public class BaseAction<T> extends ActionSupport implements ModelDriven<T> {
    
        protected T model;
        /**
         * 相关的术语:
         * BaseAction<Area> 参数化类型
         * <>中内容:实际类型参数
        */
        //子类对象创建,父类无参构造执行
        //目的:获取实际类型参数
        public BaseAction() {
            //1、获取当前运行的class
            Class clzz = this.getClass(); //子类Action的Class:AreaAction
            System.err.println(clzz);
            //获取父类class
            //Type getGenericSuperclass() 
            //返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type。 
            Type type = clzz.getGenericSuperclass();
            
            //2、获取参数化类型
            ParameterizedType pt = (ParameterizedType) type;
            System.err.println(pt);
            //Type[] getActualTypeArguments() 
            //返回表示此类型实际类型参数的 Type 对象的数组。 
            Type[] types = pt.getActualTypeArguments();  //[Area]
            //3、获取实际类型参数
            Class clzzzzz = (Class) types[0]; //Area 的class
            try {
                model = (T) clzzzzz.newInstance();
                System.out.println(model);
            }  catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        public T getModel() {
            return model;
        }
        
        //属性驱动接收datagrid分页组件提交参数
        protected int page; //当前页
        protected int rows;//每页显示记录数
        public void setPage(int page) {
            this.page = page;
        }
        public void setRows(int rows) {
            this.rows = rows;
        }
        /**
          * @Description: 将Page对象转为json字符串,向浏览器输出
         */
        public void java2Json(Page<T> page, String[] excludes){
            try {
                Map<String, Object> map = new HashMap<>();
                map.put("total", page.getTotalElements());
                map.put("rows", page.getContent());
                
                //将fixedares集合属性排除掉,不转json
                JsonConfig jsonConfig = new JsonConfig();
                jsonConfig.setExcludes(excludes);
                
                String json = JSONObject.fromObject(map, jsonConfig).toString();
                
                ServletActionContext.getResponse().setContentType("text/json;charset=utf-8");
                ServletActionContext.getResponse().getWriter().write(json);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        /**
         * @Description: 将List集合转为json字符串,向浏览器输出
         */
        public void java2Json(List list, String[] excludes){
            try {
                JsonConfig jsonConfig = new JsonConfig();
                jsonConfig.setExcludes(excludes);
                String json = JSONArray.fromObject(list, jsonConfig).toString();
                ServletActionContext.getResponse().setContentType("text/json;charset=utf-8");
                ServletActionContext.getResponse().getWriter().write(json);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    网络测量中基于Sketch方法的简单介绍
    Reading SBAR SDN flow-Based monitoring and Application Recognition
    Reading Meticulous Measurement of Control Packets in SDN
    Reading SketchVisor Robust Network Measurement for Sofeware Packet Processing
    ovs加dpdk在日志中查看更多运行细节的方法
    后缀数组
    (转载)LCA问题的Tarjan算法
    Codeforces Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) A. Checking the Calendar(水题)
    Vijos 1816统计数字(计数排序)
    卡特兰数
  • 原文地址:https://www.cnblogs.com/javaxiaoxin/p/7366371.html
Copyright © 2011-2022 走看看