我是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等
答案 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属性时,您将实现计算并返回结果。