用于填充Oracle ADF中的瞬态属性的java代码

时间:2013-03-23 08:31:27

标签: oracle-adf

我是Oracle ADF的新手。

我创建了一个视图对象,它有一个瞬态属性。 (选择文字并没有提供任何值。) 现在,我想使用来自Java类的同一viewobject的另一列(一些业务计算)来填充列。 知道哪个班级或我怎么做?

是否必须编写我的逻辑的rowImpl类?如果是这样,你能给出一个例子吗?

这是我要创建的一个示例。在Hr模式中,我们有使用外键关系的Department和Employees表。

DepartmentName Noofemployees Percentage

HR 2 10.52631579 管理员8 42.10526316 工程师9 47.36842105 Grand totatal 19 100

这里百分比是我的瞬态属性。因此值为2/19 * 100 OR 8/19 * 100等

3 个答案:

答案 0 :(得分:1)

为什么不考虑使用Groovy来计算transient属性的值,方法是将其设置为“expression”,然后编写Groovy表达式来引用同一个VO中的其他属性。 Using Groovy Whitepaper Webinar Sample Docs

答案 1 :(得分:1)

<强>解决方案: 在部门VO中,使用以下表达式创建瞬态属性“ TotalEmployees ”: 的 EmployeesView.count( “EMPLOYEE_ID”) 这可以为您提供每个部门的员工数量。 现在在DepartmentsView.xml中创建一个视图访问器,添加DepartmentsView。 因此,现在您可以使用此访问器访问同一视图的每一行。 创建另一个名为“百分比”的瞬态属性 在表达式中编写以下代码:

if(TotalEmployees == null){
return TotalEmployees}
else {
return TotalEmployees/DepartmentsView.sum("TotalEmployees")*100 
}

注意:null条件是为了避免div值为空值异常。

答案 2 :(得分:0)

你可以让jdev创建ViewRowImpl类,它将为你提供属性的geetter和setter方法。在获取您的transient属性时,您将实现计算并返回结果。