我想了解ADF的ViewObjectImpl类中isExecuted()的实用程序。 文档非常稀疏( Indicates whether the row set has been executed or not ),我无法清除疑虑。
根据文档,仅当行集至少执行一次时才会返回true。但是,我看到一旦我的应用程序模块被创建,一个视图对象放在应用程序模块中,返回“isExecuted()= true”..这是预期的还是有任何设置,因为这是发生了吗?
答案 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中):
此外,您可以进一步调整AM下的选项 - >一般 - >调整 - >自定义运行时实例化行为