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();
            }
        }
    }
  • 相关阅读:
    Hadoop面试
    Node.js面试题
    Node.js面试题
    [转载]最好的关系,是我懂你的不容易
    据说练就了一指禅神功的觅闻实时手机新闻网,正以每天2000+IP的用户量递增。有智能手机的可以当场进行体验,没有的就算了哈
    刚6瓶啤酒4两56度白酒下肚,居然20分钟做了一手机版网站 !
    Android:刚6瓶啤酒4两56度白酒下肚,居然20分钟做了一手机版网站 !
    IT人生的价值和意义 感觉真的有了
    (Android+IOS)正在做一个新闻App,做的差不多了,听听大家的建议 (图)
    (Android 即时通讯) [悬赏],无论是谁发现一个漏洞奖励人民币1000元!
  • 原文地址:https://www.cnblogs.com/wqsbk/p/7398084.html
Copyright © 2011-2022 走看看