我将使用oracle.jbo.ApplicationModule :: createViewObjectFromQueryStmt方法来解决此问题。
我将逐步介绍如何执行此操作
创建视图对象和应用程序模块
1-右键单击模型项目,然后选择新建
2-从左窗格中选择“ ADF业务组件” ,然后从列表中选择“查看对象” ,然后单击“确定”按钮
3-在“名称”中输入“ DynamicVO” ,然后选择“ Sql Query”单选按钮,然后单击“下一步”按钮。
4-在选择字段中写入“从双选中选择*” ,然后单击“下一步”按钮,直到到达窗口“ 9的第8步”
5-选中“添加到应用程序模块”复选框,然后单击“完成”按钮。
实施应用程序模块中的更改
1-打开应用程序模块“ AppModule” ,然后打开“ Java”选项卡,然后选中“ Generate Application Module Class AppModuleImpl”复选框
2-打开AppModuleImpl.java类,并为动态视图对象添加以下方法
public void changeDynamicVoQuery(String sqlStatement) { ViewObject dynamicVO = this.findViewObject("DynamicVO1"); dynamicVO.remove(); dynamicVO = this.createViewObjectFromQueryStmt("DynamicVO1", sqlStatement); dynamicVO.executeQuery(); }
3-打开“ AppModule”,然后打开“ Java”选项卡,然后将changeDynamicVoQuery方法添加到客户端界面
测试业务组件
1-右键单击“ 应用程序导航器 ”中的AppModue ,然后从下拉列表中选择“运行” 。
2-右键单击左窗格中的AppModule ,然后从下拉菜单中选择显示 。
在sqlStatement参数中写“ Select * from Emp”
单击执行按钮,结果将为成功。
3-双击左窗格中的DynamicVO1 ,它将显示DynamicVO的数据,并显示我输入的“从Emp中选择*”而不是在视图对象设计时使用的“从双重中选择*”的数据。
要在ADF Faces中使用动态视图对象,应使用ADF动态表或ADF动态表单。
您可以从此处下载示例应用程序
参考: ADF:来自JCG合作伙伴 Mahmoud A. ElSay的Dynamic View Object , 在Oracle Dive博客中发表。
翻译自: https://www.javacodegeeks.com/2012/08/adf-dynamic-view-object.html