`
tj2008wangqing
  • 浏览: 15185 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用反射技术,结构化表单数据(修改流程)

 
阅读更多
修改流程

1.根据共同的属性,把两个大表单分成不同的小model,每个model都是要修改的一块,
  做成要修改的类型:+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| id             | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| name           | varchar(256) | NO   |     |         |                |
| code           | varchar(64)  | NO   |     |         |                |
| desc           | varchar(256) | NO   |     |         |                |
| sort           | tinyint(4)   | NO   |     | 0       |                |
| save_sort      | tinyint(4)   | NO   |     | 0       |                |
| status         | tinyint(4)   | NO   |     | 0       |                |
| persist_class  | varchar(256) | NO   |     | NULL    |                |
| persist_method | varchar(64)  | NO   |     | NULL    |                |
| save_class     | varchar(256) | NO   |     | NULL    |                |
| save_method    | varchar(64)  | NO   |     | NULL    |                |
| page_class     | varchar(255) | NO   |     | NULL    |                |
| page_method    | varchar(64)  | NO   |     | NULL    |                |
| view_class     | varchar(255) | NO   |     | NULL    |                |
| view_method    | varchar(64)  | NO   |     | NULL    |                |
| history_class  | varchar(255) | NO   |     | NULL    |                |
| history_method | varchar(64)  | NO   |     | NULL    |                |
| access_niux    | tinyint(4)   | NO   |     | 0       |                |
| access_manage  | tinyint(4)   | NO   |     | 0       |                |
| access_yunying | tinyint(4)   | NO   |     | 0       |                |
+----------------+--------------+------+-----+---------+----------------+
每个修改类型对应不同的页面展示类,修改类,查看类、历史信息查看类

根据q_data_modify_sort 中定义的页面展示方法page、持久化方法persist、同步线上库方法save。

持久化表:
     mysql> desc q_data_modify_view;
+--------------------+-------------+------+-----+---------+----------------+
| Field              | Type        | Null | Key | Default | Extra          |
+--------------------+-------------+------+-----+---------+----------------+
| id                 | bigint(20)  | NO   | PRI | NULL    | auto_increment |
| process_history_id | bigint(20)  | NO   | MUL | NULL    |                |
| sort_id            | bigint(20)  | NO   |     | NULL    |                |
| deal_id            | bigint(20)  | NO   | MUL | NULL    |                |
| content            | text        | NO   |     | NULL    |                |
| create_date        | datetime    | NO   |     | NULL    |                |
| creator            | bigint(20)  | NO   |     | NULL    |                |
| creator_name       | varchar(64) | NO   |     | NULL    |                |
| is_pass            | tinyint(4)  | NO   |     | 2       |                |
| version            | tinyint(4)  | NO   |     | NULL    |                |
+--------------------+-------------+------+-----+---------+----------------+


1.用到的技术是反射代理:
               /* 1.销售进入修改页面 */
    public String entryDataModifyPage(
            Invocation inv,
            @Param("dealId") Integer dealId,
            @Param("processId") Integer processId,
            @Param("version") Integer version,
            @Param("sortId") Integer sortId) throws Exception {
        inv.addModel("version", version);
        long preTime = System.currentTimeMillis();
        DataModifySort dataModifySort = editService.getDataModifySortBySortId(sortId);
        Object obj = SpringConfigTool.getBean(dataModifySort.getPageClass());
        Method method = obj.getClass().getMethod(dataModifySort.getPageMethod(), Invocation.class,
                Integer.class, Integer.class, Integer.class);
        String ret = (String) method.invoke(obj, inv, dealId, processId, version);
        System.out.println("["+dataModifySort.getName()+"].page cost time ["+(System.currentTimeMillis()-preTime)+"]");
        return ret;
    }


2.序列化
      public String serialize() {
JSONObject obj = JSONObject.fromObject(this);
return obj.toString();
}

public BaseEditObject unSerialize(String json) {
if(json!=null){
JSONObject obj = JSONObject.fromObject(json);
return (BaseEditObject)JSONObject.toBean(obj,BaseEditObject.class);
}
return null; 
}



分享到:
评论

相关推荐

    log4Net详解(共2讲)

    3、表单数据自动生成 表单的有些数据,不希望由人工输入获得,国讯OA可以根据被计算字段、原始数据和计算方法自动得出目标字段数据,并可以此作为下一路由选择的判断条件。 4、系统自动提醒 对于请求的不同状况,...

    架构脑图.pdf

    - **使用反射抽取BaseDao接口及实现类**:利用反射技术实现DAO层的代码复用。 - **MySQL**:另一款流行的关系型数据库管理系统。 - **MySQL服务器安装与配置**:安装MySQL服务器并进行基本配置。 - **MySQL客户端...

    evado-meta-report:Evado应用程序元数据处理组件

    2. **装饰器(Decorators)**:利用ES6的装饰器语法,可以在不修改原有类定义的情况下,为类、属性或方法添加元数据信息,增强其功能。 3. **反射(Reflection)**:JavaScript的Reflect API提供了一种动态检查和...

    2017年尚学堂Java培训课程大纲.docx

    - **参数值的获取及类型转换**:掌握Struts2中表单数据的接收与处理方式。 - **Struts2国际化支持**:实现多语言的支持,满足国际化需求。 - **Struts2拦截器**:学习拦截器的概念及其在Struts2中的应用。 - **文件...

    .NET代码生成器.NET代码生成器

    .NET代码生成器主要利用了.NET Framework的强大功能,包括反射、元数据和编译API等,来解析已有的类库或数据库模型,并根据预定义的规则生成相应的源代码。这不仅适用于简单的CRUD操作,还可以用于创建复杂的业务...

    Python参考手册

    - **元编程**:通过元类(metaclass)和反射(reflection)等技术,动态修改或生成代码。 #### 6. Web开发 - **Flask框架**:介绍轻量级Web框架Flask的基础用法,包括路由、视图函数、模板渲染等内容。 - **Django...

    AutoFormGenerator

    AutoFormGenerator是一个基于C#开发的自动化表单生成工具,旨在简化开发者在创建和管理表单时的工作流程。这个在制品项目提供了一种高效的方法,将数据模型转换为用户友好的交互式表单,减少了手动编写HTML和...

    SSH框架整合笔记

    4. **创建ActionForm对象**:用于封装表单数据。 5. **验证表单**:调用ActionForm的`validate()`方法。 6. **处理请求**:调用对应的Action对象执行业务逻辑。 7. **返回ActionForward**:指定响应的视图组件。 8. ...

    owasp top10漏洞讲解

    - 反射型XSS:攻击者通过URL参数或表单提交等方式将恶意脚本传送给受害者。 - 基于DOM的XSS:通过改变文档对象模型(DOM)的结构来执行恶意脚本。 #### Top4:不安全的对象直接引用 **介绍:** 不安全的对象直接引用是...

    RefGen ASP.NET UI Generator-开源

    通过利用反射和缓存技术,此库能够自动生成ASP.NET控件,从而快速创建与业务对象模型紧密绑定的Web应用程序。 ### 反射技术的应用 反射是.NET框架中的一个强大工具,它允许程序在运行时检查自身,并动态地创建、...

    ssh 面试题 全面总结

    **延迟加载**是指在需要时才加载数据的技术,以减少内存占用,提高服务器性能。在Hibernate中实现延迟加载的方式有两种: 1. **Hibernate 2**:可以通过配置实现实体对象和集合的延迟加载。 2. **Hibernate 3及以上...

    Struts2+Spring+Hibernate知识点总结

    - **Struts2的工作流程**: 1. **客户端发起HTTP请求**:客户端浏览器向服务器发送HTTP请求。 2. **FilterDispatcher接收请求**:根据`web.xml`配置文件中的设置,所有的请求都会被转发至`FilterDispatcher`进行...

    Hibernate工作原理及为什么要用

    3. **反射机制**:Hibernate利用Java反射机制动态地创建和操纵对象,提高代码的灵活性。 4. **高性能**:Hibernate的轻量级设计和延迟加载策略,使得其在性能上表现出色。 **延迟加载(Lazy Loading)**: ...

    Spring,hibernate,struts的面试笔试题含答案

    6. **提交事务:** 成功完成持久化操作后,提交事务以确保更改被永久保存到数据库中。 7. **关闭 Session:** 操作完成后关闭 `Session`,释放资源。 8. **关闭 SessionFactory:** 当整个应用停止运行时,关闭 `...

    JAVA—sql 笔试常见题

    - **SOAP**:Simple Object Access Protocol,基于 XML 的协议,用于交换结构化的信息。 - **UDDI**:Universal Description, Discovery and Integration,用于发布、查找和集成 Web 服务。 #### 6. C/S 与 B/S ...

    ssh框架面试题.pdf

    6. **持久化操作**:在Session上进行增删改查操作,对象会被自动地持久化到数据库。 7. **提交事务**:事务成功后,提交更改到数据库。 8. **关闭Session和SessionFactory**:操作完成后,释放资源。 使用Hibernate...

    dotnetbeancopier:互联网复印机

    2. 表单验证:在表单提交后,可以将验证后的数据复制到新的表单对象,避免对原始数据的修改。 3. 模型转换:在不同层次或服务间进行数据传输时,无需手动创建新的对象并逐个设置属性。 除了基本的属性复制,...

    net学习笔记及其他代码应用

    答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. [Page] 26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写: namespace test { public ...

Global site tag (gtag.js) - Google Analytics