OAF_开发系列03_实现OAF如何在保存前判断数据是否存在变更(案例)
2014-06-26 Created By BaoXinjian
在OAF的开发中,可能有这样的需求,在选择保存按钮时,如果存在改动的数据,则提交事务,保存到数据库中;
如果不存在改动的数据,就提示用户当前没有数据可更改;
解决时需要判断页面中所使用的视图对象是否发生过改动,存在多种方法
1. 调用OADBTransaction.isDirty()方法
此方法用于判断当前事务中,视图对象是否发生过变更。但是此方法只对基于实体对象的视图对象有效,如果存在基于查询的视图对象,需要调用PL/SQL来改变数据库的就不行了。
2. 调用OAViewObject.isDirty()方法
此方法可以判断单个视图对象是否发生过变更,无论是基于实体对象的视图对象还是基于查询的视图对象。
3. 调用实体对象的getPostState()方法来判断
有时使用OAViewObject.isDirty()也有一定的限制。如果重新执行了查询,则视图对象的Dirty标志被重置,此时不可以使用该方法来判断是否存在变更,而需要使用下面所说的方法或第四种方法。
调用ViewRowImpl.getEntity(0).getPostState()可以判断视图行对应的实体对象是否发生过变更,这样就可以不顾是否重新查询导致Dirty标志重置。
4. 使用数据缓存
进入页面前把数据缓存到Transaction中,在保存按钮事件时,比较Transaction保存的实体对象行的每个属性是否和当前视图对象行属性一致。
使用方法四的理由是,如果存在insertRow(),然后又删除了新建的行row.remove(),此时系统就会认为视图对象存在未保存的变更。而使用第四种方法可以避免这种情况(一般情况下,应该也能说服客户接受这种情况)。
另外如果是基于查询建立的视图对象(使用PL/SQL保存到数据库中),并且存在临时属性的变更的情况(调用过row.setAttribute(),即使属性是不需要保存到数据库),就只能使用第四种方法。
需求: 在Create Expense时,判断数据是否被修改,如没有修改,跳出提示信息,提示用户数据未被修改是否需要保存
1. 在AM中调用createExpense新增判断Transaction是否被修改
2. 测试时,未修改数据,系统会跳出提示框提示用户
Thanks and Regards
参考: http://blog.csdn.net/cunxiyuan108/article/details/8800690
OAF_开发系列03_实现OAF如何在保存前判断数据是否存在变更(案例)的更多相关文章
- OAF_开发系列27_实现OAF中Java类型并发程式开发调用XML Publisher(案例)
20150814 Created By BaoXinjian
- OAF_开发系列17_实现OAF数组应用Vector / Hashmap / Hashtable / Arraylist(案例)
20150506 Created By BaoXinjian
- OAF_开发系列28_实现OAF中反编译获取class包代码JD Compiler(案例)
20150730 Created By BaoXinjian
- OAF_开发系列24_实现OAF更新记录显示Record History(案例)
20150716 Created By BaoXinjian
- OAF_开发系列13_实现OAF通过Vector动态查询设置(案例)
20150715 Created By BaoXinjian
- OAF_开发系列06_实现OAF属性集的介绍和开发Attribute Set(案例)
20150705 Created By BaoXinjian
- OAF_开发系列02_实现OAF页面的通过个性化多语言开发国际化(案例)
2014-06-10 Created By BaoXinjian
- OAF_开发系列26_实现OAF中Java类型并发程式开发oracle.apps.fnd.cp.request(案例)
20150730 Created By BaoXinjian
- OAF_开发系列23_实现OAF数据格式CSS和CSS库(案例)
20150716 Created By BaoXinjian
随机推荐
- Ubuntu 14.04中安装最新版Eclipse
Ubuntu 14.04中安装最新版Eclipse 来源:Linux社区 作者:Linux 1.安装OpenJDK Java 7 如果你的系统中没有安装Java,我们需要按照如下步骤事先安装好 ...
- (原创)jQuery Media Plugin-jQuery的网页媒体播放器插件的使用心得
jQuery Media Plugin是一款基于jQuery的网页媒体播放器插件,它支持大部分的网络多媒体播放器和多媒体格式,比如:Flash, Windows Media Player, Real ...
- ext grid 前台grid加载数据碰到数据重复只显示一条
在使用gridPanel的时候,如果其数据有字段名为“id”,且数据中id值相同的情况时,相同id的数据只会显示一条,这是因为Ext读取JSON数据的时候采用了类似主键唯一的方式,而这里的主键默认叫“ ...
- 2016年5月面试题(Unity&iOS)
NGUI的DrawCall drawcall定义:对底层图形程序(比如:OpenGL ES)接口的调用,以在屏幕上画出东西. List在内存中连续的空间保存 List是线性直接存储类型 mipMap是 ...
- python向数据库插入数据时出现乱码解决方案
中文字符串前面加u 如: title =u"你好" contents = "m" ids="13" cur.execute("IN ...
- linuxz终端开启echo颜色显示
echo输出命令echo [选项] [输出内容]-e //支持反斜线控制的字符转换:控制字符:\a //输出警告音:\b //退格键,也就是向左删除键:\n //换行符:\r //回车键:\t //制 ...
- AJAX跨域
AJAX跨域AJAX不允许跨域访问. 跨域是指浏览器B显示的是服务器S1的数据,全是从S1取得的数据则是同域:但如果B显示的S1上的数据的某个比如img是从S2上取得的数据,则是跨域.端口不一样也是跨 ...
- final关键字
1.final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的.在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会再 被扩展,那么就设计为fi ...
- 连接列值 mysql CONCAT函数
mysql concat(str1,str2,...) 返回结果为连接参数产生的字符串,如果任何一个参数带有null,则返回结果为null.如果所有参数均为非二进制字符串,则结果为非二进制字符串. 如 ...
- 论文笔记--Fast RCNN
很久之前试着写一篇深度学习的基础知识,无奈下笔之后发现这个话题确实太大,今天发一篇最近看的论文Fast RCNN.这篇文章是微软研究院的Ross Girshick大神的一篇作品,主要是对RCNN的一些 ...