OAF學習筆記-JAVA Entity Object 之 Create data(深入EO系列)
在<Your
EO name>EOImpl.java中,如果你在建立EO的Wizard中選擇了生成Create
Method,則裏面應已包含了標準方法 create().
Page上面的新增記錄即調用此方法。
public void create(AttributeList attributeList)
{
super.create(attributeList);
}
在此方法中你可以加入字段初始化的語句,但須加在super.create(attributeList)的後面。
由於CO調用AM,AM調用VO,VO調用EO,因此我們要在Page上實現增加記錄的功能,須按如下步驟進行:
1. 在VO中建立新增記錄的方法。
2. 在AM中調用VO的方法。
3. 在CO中調用AM的方法。
由於VOImpl提供了新增記錄的方法,第一步可以省略。我們可以直接在AM裏調用VO的方法來新增記錄(這個方法調用的也是EO的create(
)。
僞碼如下:
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 Row的Status有如下幾種:
STATUS_NEW –新記錄狀態
STATUS_DELETED –記錄已被刪除
STATUS_MODIFIED –記錄已被修改
STATUS_UNMODIFIED –記錄未被修改或已修改但未提交
STATUS_DEAD –新記錄未提交即被刪除
STATUS_INITIALIZED –初始化狀態
其它幾種狀態,暫時不看,這裏只說STATUS_NEW和STATUS_INITIALIZED.
當執行EO的create()方法後,EO默認Row的狀態爲STATUS_NEW,這時,這條Row會被加入OAF的校驗隊列裏,也就是說OAF會對這條記錄進行有效性的校驗.這時,如果你的記錄中有必填項,但新增時必然還沒填入值,這校校驗失敗,OAF會返回錯誤信息,當然,新增動作也就失敗了.因此,我們可以加上row.setNewRowState(Row.STATUS_INITIALIZED)來設置記錄狀態爲初始化狀態,這樣,這條記錄將不再進入校驗隊列,所以可以正常的建立,並輸入值了.
請注意:如果你的記錄沒有必填項,或必填項都有初始值,此句加不加無所謂…
文章原處:http://www.xuebuyuan.com/1546513.html