程序化实现Model层动态LOV

| May 7, 2013

本周在苏州CDC向同事们deliver ADF经典课程的时写的一个小案例,仅供ADF使用者参考。

前提:

 1. 在EmployeeVO上创建了一个View Accessor: DepartmentVO1。DepartmentVO1没有WHERE定义,没有Named View Criteria定义。

 2. 在EmployeeVO的DepartmentId属性上以DepartmentVO1作为DataSource创建了一个declarative的LOV,List Attribute也是DepartmentId.

要求:下拉EmployeeVO的DepartmentId的LOV时可选项根据当前员工的不同而发生变化(可以是任何业务逻辑)。

因为要求是更具任何业务逻辑,所以只能采用coding的方式了。

我是这样做的(随便写了个逻辑:只有比当前部门编号大50之内的部门才可选):

a. 生成EmployeeVO的ViewRow类。

b. 在ViewRow类里覆盖getDepartmentId():

    public Number getDepartmentId() {

        Number currentValue = (Number) getAttributeInternal(DEPARTMENTID);

        RowSet rs  = this.getDepartmentVO1();
        ViewObject dept = rs.getViewObject();

        Number limitValue = currentValue.add(50);

        /* (more...)