【问题标题】:java code to populate an transient attribute in Oracle ADF在 Oracle ADF 中填充瞬态属性的 java 代码
【发布时间】:2013-03-23 08:31:27
【问题描述】:

我对 Oracle ADF 很陌生。

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

我必须编写逻辑的 rowImpl 类吗?如果可以,可以举个例子吗?

这是我想要创建的示例。在 Hr 模式中,我们有 Department 和 Employees 表,喜欢外键关系。

部门名称 Noofemployees Percentage

人力资源 2 10.52631579 管理员 8 42.10526316 工程师 9 47.36842105 总计 19 100

这里的百分比是我的瞬态属性。所以值是 2/19*100 或 8/19*100 等

【问题讨论】:

  • 请告诉这是你的 jdev 版本
  • 我使用的是最新版本,11.1.1.6

标签: oracle-adf


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 不错。而且,这可以在 Groovy 中完成,无需借助 Java/扩展 fwk。你的很快。有效 -> 为什么选择 Java 而不是 Groovy 解决方案?
    【解决方案3】:

    您可以让 jdev 创建 ViewRowImpl 类,该类将为您提供属性的 getter 和 setter 方法。在获取瞬态属性时,您执行计算并返回结果。

    【讨论】:

    • 该属性没有数据,所以如果我尝试做同样的事情,它会工作吗???我的意思是当我使用表单或表格在 jsp 页面中查看对象时,getter 可以获取值......我想通过计算另一列的值来为属性添加一些值......我希望你明白什么我真的很想做...
    • 试一试。 getter 方法返回您计算的值。它不必保存数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 2019-07-20
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多