修改流程
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;
}
分享到:
相关推荐
3、表单数据自动生成 表单的有些数据,不希望由人工输入获得,国讯OA可以根据被计算字段、原始数据和计算方法自动得出目标字段数据,并可以此作为下一路由选择的判断条件。 4、系统自动提醒 对于请求的不同状况,...
- **使用反射抽取BaseDao接口及实现类**:利用反射技术实现DAO层的代码复用。 - **MySQL**:另一款流行的关系型数据库管理系统。 - **MySQL服务器安装与配置**:安装MySQL服务器并进行基本配置。 - **MySQL客户端...
2. **装饰器(Decorators)**:利用ES6的装饰器语法,可以在不修改原有类定义的情况下,为类、属性或方法添加元数据信息,增强其功能。 3. **反射(Reflection)**:JavaScript的Reflect API提供了一种动态检查和...
- **参数值的获取及类型转换**:掌握Struts2中表单数据的接收与处理方式。 - **Struts2国际化支持**:实现多语言的支持,满足国际化需求。 - **Struts2拦截器**:学习拦截器的概念及其在Struts2中的应用。 - **文件...
.NET代码生成器主要利用了.NET Framework的强大功能,包括反射、元数据和编译API等,来解析已有的类库或数据库模型,并根据预定义的规则生成相应的源代码。这不仅适用于简单的CRUD操作,还可以用于创建复杂的业务...
- **元编程**:通过元类(metaclass)和反射(reflection)等技术,动态修改或生成代码。 #### 6. Web开发 - **Flask框架**:介绍轻量级Web框架Flask的基础用法,包括路由、视图函数、模板渲染等内容。 - **Django...
AutoFormGenerator是一个基于C#开发的自动化表单生成工具,旨在简化开发者在创建和管理表单时的工作流程。这个在制品项目提供了一种高效的方法,将数据模型转换为用户友好的交互式表单,减少了手动编写HTML和...
4. **创建ActionForm对象**:用于封装表单数据。 5. **验证表单**:调用ActionForm的`validate()`方法。 6. **处理请求**:调用对应的Action对象执行业务逻辑。 7. **返回ActionForward**:指定响应的视图组件。 8. ...
- 反射型XSS:攻击者通过URL参数或表单提交等方式将恶意脚本传送给受害者。 - 基于DOM的XSS:通过改变文档对象模型(DOM)的结构来执行恶意脚本。 #### Top4:不安全的对象直接引用 **介绍:** 不安全的对象直接引用是...
通过利用反射和缓存技术,此库能够自动生成ASP.NET控件,从而快速创建与业务对象模型紧密绑定的Web应用程序。 ### 反射技术的应用 反射是.NET框架中的一个强大工具,它允许程序在运行时检查自身,并动态地创建、...
**延迟加载**是指在需要时才加载数据的技术,以减少内存占用,提高服务器性能。在Hibernate中实现延迟加载的方式有两种: 1. **Hibernate 2**:可以通过配置实现实体对象和集合的延迟加载。 2. **Hibernate 3及以上...
- **Struts2的工作流程**: 1. **客户端发起HTTP请求**:客户端浏览器向服务器发送HTTP请求。 2. **FilterDispatcher接收请求**:根据`web.xml`配置文件中的设置,所有的请求都会被转发至`FilterDispatcher`进行...
3. **反射机制**:Hibernate利用Java反射机制动态地创建和操纵对象,提高代码的灵活性。 4. **高性能**:Hibernate的轻量级设计和延迟加载策略,使得其在性能上表现出色。 **延迟加载(Lazy Loading)**: ...
6. **提交事务:** 成功完成持久化操作后,提交事务以确保更改被永久保存到数据库中。 7. **关闭 Session:** 操作完成后关闭 `Session`,释放资源。 8. **关闭 SessionFactory:** 当整个应用停止运行时,关闭 `...
- **SOAP**:Simple Object Access Protocol,基于 XML 的协议,用于交换结构化的信息。 - **UDDI**:Universal Description, Discovery and Integration,用于发布、查找和集成 Web 服务。 #### 6. C/S 与 B/S ...
6. **持久化操作**:在Session上进行增删改查操作,对象会被自动地持久化到数据库。 7. **提交事务**:事务成功后,提交更改到数据库。 8. **关闭Session和SessionFactory**:操作完成后,释放资源。 使用Hibernate...
2. 表单验证:在表单提交后,可以将验证后的数据复制到新的表单对象,避免对原始数据的修改。 3. 模型转换:在不同层次或服务间进行数据传输时,无需手动创建新的对象并逐个设置属性。 除了基本的属性复制,...
答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. [Page] 26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写: namespace test { public ...