OAF學習筆記-JAVA Entity Object 之 Create data(深入EO系列)

OAF學習筆記-JAVA Entity Object 之 Create data(深入EO系列)

在<Your
EO name>EOImpl.java
,如果你在建立EOWizard中選擇了生成Create
Method
,則裏面應已包含了標準方法 create().
Page
上面的新增記錄即調用此方法。

public void create(AttributeList attributeList)

 {

super.create(attributeList);

}

在此方法中你可以加入字段初始化的語句,但須加在super.create(attributeList)的後面。

由於CO調用AMAM調用VOVO調用EO,因此我們要在Page上實現增加記錄的功能,須按如下步驟進行:

1. VO中建立新增記錄的方法。

2. AM中調用VO的方法。

3. CO中調用AM的方法。

由於VOImpl提供了新增記錄的方法,第一步可以省略。我們可以直接在AM裏調用VO的方法來新增記錄(這個方法調用的也是EOcreate(
)

僞碼如下:

AM

Import oracle.jbo.Row;

import oracle.apps.fnd.framework.server.OAViewObjectImpl;

public void createdata()

 {

   OAViewObjectImpl
vo1 = this.getOrderLineVO1();//
取得VO的實例

   

   Row
row = vo1.createRow(); //
新增記錄

vo1.insertRow(row);//插入記錄

//上面兩句可合併成一句:
vo1.insertRow(vo1.createRow());

   row.setNewRowState(Row.STATUS_INITIALIZED);//EO
Row
的狀態

  

}

上述代碼中的最後一句很重要.說明一下:

EO RowStatus有如下幾種:

STATUS_NEW –新記錄狀態

STATUS_DELETED –記錄已被刪除

STATUS_MODIFIED –記錄已被修改

STATUS_UNMODIFIED –記錄未被修改或已修改但未提交

STATUS_DEAD –新記錄未提交即被刪除

STATUS_INITIALIZED –初始化狀態

其它幾種狀態,暫時不看,這裏只說STATUS_NEWSTATUS_INITIALIZED.

當執行EOcreate()方法後,EO默認Row的狀態爲STATUS_NEW,這時,這條Row會被加入OAF的校驗隊列裏,也就是說OAF會對這條記錄進行有效性的校驗.這時,如果你的記錄中有必填項,但新增時必然還沒填入值,這校校驗失敗,OAF會返回錯誤信息,當然,新增動作也就失敗了.因此,我們可以加上row.setNewRowState(Row.STATUS_INITIALIZED)來設置記錄狀態爲初始化狀態,這樣,這條記錄將不再進入校驗隊列,所以可以正常的建立,並輸入值了.

請注意:如果你的記錄沒有必填項,或必填項都有初始值,此句加不加無所謂



文章原處:http://www.xuebuyuan.com/1546513.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章