ORACLE ERP最佳实践 ORACLE核心应用技术 OAF开发
342555394.doc (v. 1.0 )
Doc Ref:
错误!未找到引用源。
4.8 Tree控件实现
OAF控件对象详解 29 of 69
Company Confidential – For internal use only
ORACLE ERP最佳实践 Doc Ref:
错误!未找到引用源。
5. 常用的Region Type
ORACLE核心应用技术 OAF开发
342555394.doc (v. 1.0 )
5.1 SingeDefaultColumn 布局
5.2 messageComlumnLayout 布局
5.3 SubTabs 布局
5.4 Train 布局
常用的Region Type 30 of 69
Company Confidential – For internal use only
ORACLE ERP最佳实践 Doc Ref:
错误!未找到引用源。
6. OAF_VO对象详解
ORACLE核心应用技术 OAF开发
342555394.doc (v. 1.0 )
6.1 Binding Style 绑定方式
1. Binding Style主要用于对VO的where clause做动态传值,总共有三种方式 1) Oracle Positional
是一种常用的方式,简单来说这种方式都是通过参数”:”和数字声明的,比如
Where parameter1 = :1 and parameter2=:2。参数只会根据数字在VO Sql Statement中出现的顺序传入到View Object中,而不会根据数字的大小而传入。
在VO上设置完之后,我们需要在执行VO查询之前,对VO参数进行绑定;添加代码如下 BindingStyleTestVOImpl vo =this.getBindingStyleTestVO1(); vo.setWhereClause(null);
vo.setWhereClauseParam(0, new Number(Integer.parseInt(“ticket_id”)));
vo.setWhereClauseParam(1, new Number(Integer.parseInt(“mr_route_id”)))
(注意:在使用vo.setWhereClauseParam(int index, Object value)进行赋值的时候, index一定是从0开始的,接着就是1,2,3,…… .但是在VO SQL Statement中,参数却不是必须从0开始,而且后面的参数的数值也不必比前面的大。但是在使用vo.setWhereClauseParam()给VO绑定参数值的时候一定要使用0和1作为index,而且index必须和绑定参数在VO SQL Statement中出现的顺序对应的类型一致);
如果使用了其他index,就会抛出无效的列索引错误
OAF_VO对象详解 31 of 69
Company Confidential – For internal use only
ORACLE ERP最佳实践 ORACLE核心应用技术 OAF开发
342555394.doc (v. 1.0 )
Doc Ref:
错误!未找到引用源。
oracle.apps.fnd.framework.OAException: oracle.jbo.SQLStmtException: JBO-27122:Invalid column index ….. 2)
Oracle Name
创建VO添加参数查询。
在Bind Variable 页面上定义要在VO SQL Statement中使用的绑定参数的名字,类型和默认值
在VO定义上设置完之后,我们需要执行VO查询之前,使用
vo.setNamedWhereClauseParam(String name, Object value)对VO的绑定参数进行赋值,如下面的代码。
OAF_VO对象详解 32 of 69
Company Confidential – For internal use only
ORACLE ERP最佳实践
ORACLE核心应用技术 OAF开发
342555394.doc (v. 1.0 )
Doc Ref:
错误!未找到引用源。
BindingStyleTest2VOImpl vo =this.BindingStyleTest2VO1(); --初始化
vo.setWhereClause(null); vo.setWhereClauseParams(null);
vo.setNamedWhereClauseParam(\ vo.setNamedWhereClauseParam(\ 3)
JDBC Positional
这种绑定方式一般用在调用存储过程和函数会通过?进行参数传递。一般在OAF用的很少
6.2 Row Impl 类 1.VO初始化分类 1)仅插入型VO的初始化 //检查VO是否有行
Vo.getFetchedRowCount()//检查当前缓存中VO的行数,如果VO已经被插入过行了,那么返回的值肯定大于0,就无需调用vo.setMaxFetchSize
为了避免OAF中一些已知的BUG,我们在对其进行初始化时最好写下面代码 if (vo.getFetchedRowCount() == 0) { vo.setMaxFetchSize(0); vo.executeQuery();
... // Insert rows into the view object. }
OAF_VO对象详解 33 of 69
Company Confidential – For internal use only