java反射实现生成easyui中datagrid基础field

来源:互联网 发布:网络组策略开通 编辑:程序博客网 时间:2024/06/05 07:04

当使用datagrid实现页面时经常会遇到对象的所有属性都要添加进去,很是麻烦,于是便写了该工具代码,方便大家.可以直接生成jsp的基础页面,以及生成datagrid中所有属性的field,

注意: model支持任意级目录扫描,使用时注意配置各个路径

文件名配置方式为正则方式


package com.change.generate.bean;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.lang.reflect.Field;public class AutoCreateDataGridColumn {private static final String BEAN_URL = "com.change.func.model";//model基础目录private static final String FILTER_NAME = "Whs\\w+\\.java";// 扫描的文件名,支持正则方式private static final String JSP_PATH = "/WebContent/securityJsp";//WEB文件目录private static final boolean WRITE_TO_FILE = false;//写入到文件private static final boolean PRINT_INFO_FLAG = true;// 打印信息开关private static final boolean PRINT_ERROR_FLAG = true;// 打印错误开关private static final boolean FORCE_FLAG = false;// 强制生成开关,若为true,即使文件已存在也重新生成private static final String RT_1 = "\r\n";// 换行private static final String BLANK_4 = "";// ≈TABprivate static final String BLANK_8 = BLANK_4 + BLANK_4;private static final String BLANK_12 = BLANK_8 + BLANK_4;public static void main(String[] args){String fileName = System.getProperty("user.dir") + "/src/"+ BEAN_URL.replace(".", "/");File file = new File(fileName);beanScan(file, "", true);}/** *  * <p> * bean文件扫描 * </p> * <p> * 扫描指定目录下的所有java文件,生成对应的service和action,与bean同目录结构 * </p> *  * @param file *            需要扫描的文件 * @param parentPack *            上级包名:若无传递"",若有使用.开头,如".log" */public static void beanScan(File file, String parentPack, boolean isFirst){if (file.exists()){if (file.isDirectory()){File[] fs = file.listFiles();for (int i = 0; i < fs.length; i++){File f = fs[i];String parent = "";if (!isFirst){parent = parentPack + "." + file.getName();}beanScan(f, parent, false);}}else if (file.isFile() && file.getName().matches(FILTER_NAME)){try{createByBean(file, parentPack);// 创建相关类} catch (Exception e){printError(file.getAbsolutePath(), e);}}}}/** *  * <p> * 创建对应的对象 * </p> * <p> * 创建serviceI,serviceImpl,Action * </p> *  * @param f *            被创建的对象 * @param parentPack *            上级包名:若无传递"",若有使用.开头,如".log" * @throws Exception */@SuppressWarnings("rawtypes")public static void createByBean(File f, String parentPack) throws Exception{Class c = Class.forName(BEAN_URL + parentPack + "."+ f.getName().substring(0, f.getName().indexOf(".")));createBeanPage(c, parentPack);}/** * 追加顶部 * @param sb */private static void appendHead(StringBuffer sb){sb.append("<%@ page language=\"java\" contentType=\"text/html; charset=UTF-8\" pageEncoding=\"UTF-8\"%>");sb.append(RT_1);sb.append("<%");sb.append(RT_1);sb.append(BLANK_4+"String contextPath = request.getContextPath();");sb.append(RT_1);sb.append("%>");sb.append(RT_1);sb.append("<!DOCTYPE html>");sb.append(RT_1);sb.append("<html>");sb.append(RT_1);sb.append("<head>");sb.append(RT_1);sb.append("<title>标题</title>");sb.append(RT_1);sb.append("<jsp:include page=\"../../inc.jsp\"></jsp:include>");sb.append(RT_1);sb.append("<script type=\"text/javascript\">");sb.append(RT_1);sb.append("/*##全局变量块##*/");sb.append(RT_1);sb.append("var grid;");sb.append(RT_1);sb.append("/*##业务块##*/");sb.append(RT_1);sb.append("/*##业务扩展##*/");sb.append(RT_1);sb.append("/*##过滤数据##*/");sb.append(RT_1);sb.append("/*##初始化##*/");sb.append(RT_1);sb.append("/**");sb.append(RT_1);sb.append("* [initGrid 初始化datagrid]");sb.append(RT_1);sb.append("*/");sb.append(RT_1);sb.append("function initGrid() {");sb.append(RT_1);sb.append(BLANK_4+"grid = $('#grid').datagrid({");sb.append(RT_1);sb.append(BLANK_8+"queryParams:{},");sb.append(RT_1);sb.append(BLANK_8+"url: sy.contextPath + '',");sb.append(RT_1);sb.append(BLANK_8+"idField: 'no',");sb.append(RT_1);sb.append(BLANK_8+"sortName: 'no',");sb.append(RT_1);sb.append(BLANK_8+"frozenColumns: [[{");sb.append(RT_1);sb.append(BLANK_12+"field: 'checkbox',");sb.append(RT_1);sb.append(BLANK_12+"checkbox: true");sb.append(RT_1);sb.append(BLANK_8+"}");}/** * 追加底部 * @param sb */private static void appendFoot(StringBuffer sb){sb.append(RT_1);sb.append(BLANK_8+"]]");sb.append(RT_1);sb.append(BLANK_4+"});");sb.append(RT_1);sb.append("};");sb.append(RT_1);sb.append("</script>");sb.append(RT_1);sb.append("</head>");sb.append(RT_1);sb.append("<body>");sb.append(RT_1);sb.append(BLANK_4+"<table id=\"grid\" data-options=\"\"></table>");sb.append(RT_1);sb.append("</body>");sb.append(RT_1);sb.append("</html>");}/** * 根据属性生成grid * @param c * @param parentPack * @throws IOException */@SuppressWarnings("rawtypes")private static void createBeanPage(Class c, String parentPack) throws IOException {String cName = c.getSimpleName();String fileName = System.getProperty("user.dir") + JSP_PATH+parentPack.replace(".", "/")+ "/" + cName + ".jsp";// TODO Auto-generated method stubField[] fs = c.getDeclaredFields();File targetFile = new File(fileName);if ((!targetFile.isFile()||FORCE_FLAG)||!WRITE_TO_FILE) {File pf = targetFile.getParentFile();if (!pf.isDirectory()){pf.mkdirs();}StringBuffer sb = new StringBuffer();appendHead(sb);for (int i = 0; i < fs.length; i++) {Field f = fs[i];String name = f.getName();sb.append(",{"+RT_1);sb.append(BLANK_12+"width: '100',");sb.append(RT_1);sb.append(BLANK_12+"title: '',");sb.append(RT_1);sb.append(BLANK_12+"field: '"+name+"'");sb.append(RT_1);sb.append(BLANK_8+"}");}appendFoot(sb);printLog(fileName);if (WRITE_TO_FILE) {FileWriter fw = new FileWriter(targetFile, false);fw.write(sb.toString());fw.flush();fw.close();}else {System.out.println(sb);}}}private static void printLog(String info){if (PRINT_INFO_FLAG){System.out.println("generate file:" + info + " success!");}}private static void printError(String info, Exception e){if (PRINT_ERROR_FLAG){System.err.println("generate file:" + info + " error!Exception:"+ e.getMessage());e.printStackTrace();}}}


                                             
0 0
原创粉丝点击