OAF—Entity Object之Initialize data

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-02 02:01 点击:

Initialize data(数据初始化):
主要用于新增记录,方法主要由两个:
1. 在Design time时设定Page item的Default value.
2. 在Run     time时用编程方式设定.
Default value的设定这里不说.留待后面”深入UI item”时再说.
这里主要说说如何利用编程方式设定.
 
在建好EO后,如果你选择了生成JAVA文件及JAVA CLASS,我们在该EO下会发现有个<Your EO name>EOImpl.java的节点,
双击打开后,里面已经有了一些方法了,主要有如下几类:
DML Operation Class
Set Attribute Value Class
Get Attribute Value Class
Validation Class
那我们要初始化,很明显是要用到其中的Set Attribute Value Class.这些方法名字都是set +<Attribute Name>.例如: 
public void setHeaderId(Number value)
 {
   setAttributeInternal(HEADERID, value);
                              }
传入参数是value,然后利用setAttributeInternal方法把value赋给HEADERID(注意,
这个HEADERID是EO Attributes的别名.在EO中为Attribute赋值主要有如下两个方法:
 
setAttribute(int index, String lang , object val)
index代表Attribute在EO中的位置(注意,只在显示在Page上的Attribute中排序),也可用EO Attributes的别名代替.
val代表传入的值,lang代表语言,可省略。例如:
 
Number price = new Number(100);
setAttribute(5, price);
按照FORM的习惯,我们可能会写成  setAttribute(5,100),
请注意,这是错误的,因为JAVA会认为这个100是基本类型中int类型,而不是object类型。
 
setAttributeInternal(int index,Object val)
除了没有语言的区分外,与setAttribute一致.
 
这样,我们可以自已写个CLASS,把所有需要初始化的Attributes全部在里面设定好.如下:
public void setallAttribute()

{

Number v_id = new Number(100);   

setLineId(v_id);

String v_desc = new String(“ABCD”);

setItemDesc(v_desc);

...

}

然后在其中的一个DML Operation class: create()中加入上述方法:
public void create(AttributeList attributeList)

{

super.create(attributeList);

setallAttribute();

  

}

这样,当你在Page上执行新增记录的动作时,你会发现有些字段就有了初始值了…
在初始值的定义中,有下面几个比较特殊的:

1.      Primary Key的初始化

2.      WHO字段的初始化

3.      需要动态指定字段的初始化

 

Primary Key的初始化

调用OADBTransaction来取得Sequence值,并通过SetAttribute( )方法赋予Primary Key即可.代码如下:

public void create(AttributeList attributeList)

 {

super.create(attributeList);

 

   OADBTransaction transaction = getOADBTransaction();

    Number lineid = transaction.getSequenceValue("xx_order_line_s");

   setLineId(lineid);

  

}

上面的代码是写在EO的 create( )方法里的,这样的话,当你新增一个空记录时,在lineid字段上就有了一个初始值,即序列

取得的值,如果你不保存这条记录的话,就会出现跳号的情况,因此可把这个语句放在提交的方法里.

 


WHO字段的初始化


正常情况下,如果你的EO中包含了WHO字段的话,当你提交时,OAF会自动帮你初始化WHO字段,是不需要编写代码的,

如果你需要自已来获取WHO信息的话,仍可以利用OADBTransaction的方法来获取,主要有如下几个.

     OADBTransaction transaction = getOADBTransaction();

transaction.getUserId()

transaction.getCurrentDBDate()

transaction.getResponsibilityApplicationId()

transaction.getResponsibilityId()

 

需动态赋值字段的初始化

这种情况我们在做FORM时经常遇到,即根据某一种情况需实时从数据库中提取某一信息做为字段的值.

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Table函数使用简介
    • Oracle数据库Constraint约束的常用操作及异常处理
    • Bulk Collect性能分析(zz)
    • export/import的使用
    • OCP043第十五讲 Database Security
    • ORACLE10gr2数据导入MySQL方案
    • oracle 让sys用户可以使用isqlplus
    • 在oracle数据库下使用iSQL*Plus DBA访问数据库
    • Oracle行列转换小结
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1