概述:在实际应用中,经常会用到对于同一个属性使用不同LOV,本技巧主要介绍了对于同一属性使用多个LOV的方法,以及不同LOV之间切换的方法。场景:
1、 定义新员工时,根据员工学历的不同,使用不同LOV选择起薪范围
2、 根据职位不同,LOV中显示的内容也不同或需使用不同LOV显示内容
3、 其他应用场景
下面我们以EmployeesVO中的DepartmentID属性为例,根据员工Salary的不同为该属性添加使用不同LOV,以显示不同内容。
实现:1、创建新应用后,创建 Entity Object:EmployeesEO ,该EO基于数据库中的 Employees表,可以看到其关联(EmpManagerFkAssoc)被自动创建。
2、创建基于1中创建的EO的View Object:EmployeesVO。
3、创建名为 EmpManagerFkLink的View Link ,在“Selected Source Attribute”和“ Selected Destination Attribute”中都选择EmployeesVO中的 EmpManagerFkAssoc,点击“OK ”完成。
4、创建 DepartmentId 的LOV 数据源 VO( DepartmentLOV ),并设置 DepartmentId属性为 Key Attibute ,其SQL 如下:
SELECT Departments.DEPARTMENT_ID,
Departments.DEPARTMENT_NAME,
Departments.MANAGER_ID,
Departments.LOCATION_ID
FROM DEPARTMENTS Departments
|
5
、为
EmployeesVO
中的
DepartmentId
属性添加两个
LOV
,其
List Data Source
均选择为前面创建的
DepartmentsLOV
(
DepartmentsLOV1
),
List Attribute
为
DepartmentId
,
List Return Values
使用默认,即
DepartmentId-DepartmentId
,在
UI Hints
中设置不同的显示项,分别如下:


6
、为
DepartmentId
属性添加
LOV Swicher
,单击选中该属性,在“
List of Values: DepartmentId
”中设置
List Type UI Hint
为
Input Text with List of Values
,在
List of Values Switcher
点击新建,命名为
lovSwitcher
,在“
Edit Attribute: lovSwitcher
”面板中选择
Value Type
为
Expression
,添加
Value
内容,即
Groovy
脚本,以判断使用哪个
LOV
,在这里根据
Salary
进行判定(若
Salary>10000
,使用
LOV_DepartmentId1
,若
Salary<=10000
,使用
LOV_DepartmentId
)

设置默认显示的LOV

7、新建页面,命名为
Main
,为方便扩展功能,产生出了其
Backing Scope
的
Managed Bean
。

7.1
、选中并点开“
Data Controls
”中“
AppModuleDataControl
”内的
EmployeesVO2
(与
AM
中名字相同,不一定为该名),继续点击“
Named Criteria
”,将
All Queriable Attributes
拖动到页面中,选择
ADF Query Panel with Table
,根据需要调整显示属性,完成后确定。

7.2
、在“
Structure
”面板中选择
af:table – redId1
,双击打开其属性编辑器,选择“
Columns
”项设置所有属性(除
lovSwitcher
)的“
Component To Use
”为输入类型控件。

最后结果:
在Search 区中在Salary选项中填入 9999(<10000 ),DepartmentId此时使用的 LOV是LOV_DepartmentId ,显示DepartmentId和 DepartmentName两项。

下面是填入10001的结果:
