2009年9月12日星期六

ADF_014:ADF-BC 特色功能之二:强大的自动计算与验证功能

说明:本文最后一次修改时间:2011-11-05。
开发环境:JDeveloper 11.1.2.1.0。

完成 《Examining ADF Business Components New Features》之 Enhanced Calculation and Validation。

1. Transient Attribute
在EO上增加临时属性TotalComp,并使用Groovy设置其值=(Salary!=null?Salary:0)+(Salary*(CommissionPct!=null?CommissionPct:0))
在VO上增加属性fromEO,那为什么不直接在VO上增加临时属性呢?

2. 验证 Foreign Keys:Key Exists
LOVs可以限制用户只能从已有的外键中选择,但有时界面要求使用文本输入框,而不是下拉列表,这时候就需要使用Key Exists来验证用户输入的外键是否正确。
并且,Key Exists在模型层设置该验证功能,所有使用该模型的程序(无论是Web应用,还是其它程序),都必须通过验证才可以提交。
LOVs是定义在VO上的,而 Key Exists是定义在EO上的。

3. 约束性条件依赖:Compare
某个Attribute的值与设定值进行比较,为真则满足要求,否则报错。
其中可以设定触发条件和触发Attributes。

4. 使用Groovy Script验证
如果脚本中有对象为null,Groovy不会抛出NullPointerException,而是表达式结果为null,null对应的Boolean值为false。
另外,教程文档上的Groovy表达式有错,Salary为Decimal类型,模运算要求必须是整型,因此需要转换。
最终的Script如下:
if (Dept1.DepartmentName.toUpperCase().endsWith("S") && Salary.intValue() % 5 != 0) {
return false;
}
return true;

没有评论: