Groovy在ADF BC中的常见用法之一

开发运行环境:JDeveloper 11.1.2.4

1. 设置EO或VO的Attribute值

(1)在Employees EO上增加一个Attribute:AnnualSalary,Expression: (Salary != null ? Salary : 0 ) * 12。



(2)如果需要引用EntityImpl类中的自定义方法,需要加前缀:adf.object。
比如:adf.object.getDefaultSalaryForGrade()。
这里,adf.object指向的是当前EntityImpl。


2. 定义在EO的Attribute上的验证规则
(1)在Employees EO的Salary Attribute增加一个验证规则:

if (JobId == "SA_REP"){
 return newValue < 1000
} else
return true

在验证规则中reference一个Attribute时,Attribute-level的验证规则首先被触发,验证该Attribute的newValue值。newValue是用户输入后改变的值,oldValue是改变之前的值。

(2)在Employees EO的Salary Attribute增加另一个验证规则,其中调用了EntityImpl类中的自定义方法:getMaxSalaryForGrade。

if (JobId == "SA_MAN"){
 return newValue < source.getMaxSalaryForGrade(JobId)
} else
return true

注意,reference方法前要加前缀“source”。

3. 访问EntityImpl类的自有方法
(1)Override create方法
    /**
     * Add attribute defaulting logic in this method.
     * @param attributeList list of attribute names/values to initialize the row
     */
    protected void create(AttributeList attributeList) {
        super.create(attributeList);
        SequenceImpl seq = new SequenceImpl("EMPLOYEES_SEQ", getDBTransaction());
        oracle.jbo.domain.Number seqNextVal = seq.getSequenceNumber();
        setEmployeeId(Integer.valueOf(seqNextVal.intValue()));
    }
这样修改后,EmployeeId的值将从Sequence中获取。

(2)如果你不想Override create方法,也可以直接使用Groovy表达式来获取Sequence的下一个值。
设置EmployeeId的Expression:(new oracle.jbo.server.SequenceImpl("EMPLOYEES_SEQ",adf.object.getDBTransaction())).getSequenceNumber()
 注意,这里必须写全类SequenceImpl的路径名。

(3)如果你觉得(2)的方式有些不直观,可以在EntityImpl中定义一个Help方法。
    public oracle.jbo.domain.Number nextVal(String sequenceName) {
        SequenceImpl s = new SequenceImpl(sequenceName, getDBTransaction());
        return s.getSequenceNumber();
    }
然后,设置EmployeeId的Expression:adf.object.nextVal("EMPLOYEES_SEQ")。

4. 访问hints属性
(1)如果想访问LastName的label属性,可以这样写:adf.object.hints.LastName.label。
(2)如果在error message中想访问LastName的label属性,可以这样写:source.hints.LastName.label。

文章来自:

http://maping930883.blogspot.com/2013/06/adf233groovyadf-bc.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值