在ADF ViewObjectImpl类中使用isExecuted()有什么用

时间:2017-08-12 20:21:41

标签: oracle-adf

我想了解ADF的ViewObjectImpl类中isExecuted()的实用程序。 文档非常稀疏( Indicates whether the row set has been executed or not ),我无法清除疑虑。

根据文档,仅当行集至少执行一次时才会返回true。但是,我看到一旦我的应用程序模块被创建,一个视图对象放在应用程序模块中,返回“isExecuted()= true”..这是预期的还是有任何设置,因为这是发生了吗?

1 个答案:

答案 0 :(得分:2)

很难通过Application Module Tester完全看到。 但是,如果您有基于AM的数据控件并在界面(例如UI页面)上使用它们,则可以检查isExecuted方法的工作情况。

在您的用户界面上,您可以创建一个不基于VO绑定到任何数据控件的基本页面 - 但仅限于通过AM的客户端界面公开的简单AM操作:

public void showIsExecuted() {        
    System.out.println("*******TestAppModuleImpl::showIsExecuted() DepartmentsView1:" + this.getDepartmentsView1().isExecuted());
    System.out.println("*******TestAppModuleImpl::showIsExecuted() DepartmentsView2:" + this.getDepartmentsView1().isExecuted());
    System.out.println("*******TestAppModuleImpl::showIsExecuted() ViewObj1:" + this.getViewObj1().isExecuted());
}

在UI页面(view1.jsf)上,只调用此方法而不使用任何基于VO的数据控件,输出应显示:

*******TestAppModuleImpl::showIsExecuted() DepartmentsView1:false
*******TestAppModuleImpl::showIsExecuted() DepartmentsView2:false
*******TestAppModuleImpl::showIsExecuted() ViewObj1:false

现在,在另一个UI页面(例如view2.jsf)上,显示来自一个或多个VO的一些数据以及自定义AM功能的按钮。运行页面后,您应该在日志中获得以下内容(如预期的那样):

*******TestAppModuleImpl::showIsExecuted() DepartmentsView1:true
*******TestAppModuleImpl::showIsExecuted() DepartmentsView2:true
*******TestAppModuleImpl::showIsExecuted() ViewObj1:false

供参考,这就是我的设计时间设置(在JDeveloper 12.2.1.1中): enter image description here

此外,您可以进一步调整AM下的选项 - >一般 - >调整 - >自定义运行时实例化行为