• 分页工具类 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();
            }
        }
    }
  • 相关阅读:
    AJAX
    正则表达式
    SQL
    foreach 的本质
    C#
    Dojo的subscribe和publish的简单使用
    Dojo的Gridx使用jsonrest需要注意的地方
    如何让Button使用自定义icon
    Djanog结合jquery实现ajax
    如何设置静态文件路径
  • 原文地址:https://www.cnblogs.com/wqsbk/p/7398084.html
Copyright © 2020-2023  润新知