2013-03-23 37 views
0

我對Oracle ADF非常新穎。用於在Oracle ADF中填充瞬態屬性的java代碼

我創建了一個視圖對象,它有一個瞬態屬性。 (選擇文字並且沒有提供任何值。) 現在我想使用Java類中相同viewobject的另一列(有些業務計算)填充列。 任何想法哪一類或我該怎麼做?

是不是rowImpl類,我必須寫我的邏輯?如果是的話,你可以舉個例子嗎?

這裏是我正在創建的一個例子。在Hr模式中,我們有喜歡外鍵關係的Department和Employees表。

DepartmentName的Noofemployees百分比

HR 2 10.52631579 聯繫8 42.10526316 工程師9 47.36842105 大totatal 19 100

這裏的百分比是我短暫的屬性。因此,值爲2/19 * 100或8/19 * 100等

+0

請告訴它是您的jdev版本 –

+0

我使用的是最新版本,11.1.1.6 –

回答

1

爲什麼不考慮Groovy通過將其設置爲「expression」來計算transient屬性的值,然後編寫一個Groovy表達式來引用同一個VO中的其他屬性。 Using Groovy Whitepaper Webinar Sample Docs

+0

謝謝搭檔,我會閱讀關於此,並給它一槍! –

0

您可以讓jdev創建ViewRowImpl類,它將爲您提供屬性的geetter和setter方法。在獲得瞬態屬性之後,您可以執行計算並返回結果。

+0

該屬性沒有數據,所以如果我嘗試做同樣的工作將會發生什麼? 我的意思是,當我使用表格或表格查看jsp頁面中的對象時,getter可以獲取值...... 我希望使用另一列值的計算來爲屬性添加一些值.... 我希望你明白我真的想要做什麼... –

+1

試試吧。 getter方法返回您計算的值。它不必保存數據。 –

1

解決方案: 在部門VO創建一個瞬態屬性 「TotalEmployees」 下面的表達式: EmployeesView.count( 「EMPLOYEE_ID」) 這給你一個每個部門的員工數量。 現在在DepartmentsView.xml中創建一個視圖訪問器,添加DepartmentsView。 因此,現在你可以訪問這個訪問器的相同視圖的每一行。 創建一個名爲「百分比」另一個短暫屬性 在表達式中寫入以下代碼:

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

注:空條件,以避免空值例外格。

+0

不錯。而且,這可以在Groovy中使用Java /擴展fwk來完成。你很快。作品 - >爲什麼選擇Java over Groovy解決方案? – Joe