日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OAF_开发系列03_实现OAF如何在保存前判断数据是否存在变更(案例)

發布時間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

轉載于:https://www.cnblogs.com/eastsea/p/4636051.html

總結

以上是生活随笔為你收集整理的OAF_开发系列03_实现OAF如何在保存前判断数据是否存在变更(案例)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。