概述:在实际应用中,经常会用到对于同一个属性使用不同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的结果:
