1、processFormRequest不能更改webBean的属性
2、row.setNewRowState(Row.STATUS_NEW/STATUS_INITIALIZED);
两种状态的区别:
a.STATUS_NEW 会对新增的行进行有效的验证,如有必填项,若未填写,则新增失败, 而 STATUS_INITIALIZED 不会进行验证 b.在新增后设置STATUS_INITIALIZED状态,表示新增行处于脱管状态,不参与事务提交,不参与验证,直到页面进行更新,然后OA框架自动把状态设回为STATUS_NEW,以重新参与事物和验证
对VO增加语句为:
EmployeesVOImpl vo = (EmployeesVOImpl)getEmployeesVO1();//获取VO if (!vo.isPreparedForExecution())//判断是否已经执行 { vo.executeQuery();//首先必须执行VO } Row row = vo.createRow();//创建一个新行 row.setNewRowState(Row.STATUS_NEW); //给创建的新行赋类型 vo.insertRow(row);//将新创建的行加入到VO里 //现在的vo(缓存中的数据),状态是持久状态(提交后直接保存至数据库) 新增的列一般没有删除图标,需要在VO里的删除图标加一个默认值,因为只有执行查询语句才会给删除 列赋值或在createRow();后设置值row.setAttribute("deleteFlag",true);
对VO删除语句为:
1)、得到row:Row row = (XXXVORowImpl)deleteIter.getRowAtRangeIndex(i); 或Row[] rows = vo.getFilteredRows("OutPlanDetId", detailId);//rows[i] 2)删除并其提交 row.remove(); getTransaction().commit();
3、item中的disable的属性设置true
界面不能修改,在代码也获得不到值(pageContext.getParameter("techTrialDate");),获取不到值,只能抓取标签
4、隐藏LOV及下拉框对应的Value值的控件
这种设置方法是不形成html标签,因此也无法获取input内的value,所以要在PG里设置CSS属性或者设置item style为formvalue
OAMessageTextInputBean sAppPropCodeValue = (OAMessageTextInputBean)webBean.findChildRecursive("SAppPropCodeValue"); sAppPropCodeValue.setRendered(false);
5、命名规范:cux.oracle.apps.inv001(这个是需求上的缩写).***
前面加INV,是因为在运行的时候,会去数据库中查找对应的应用模块INV
6、table每个字段必须有vo映射,控件有个required设置为yes表示为必填项
7、LOV常用的三个事件:lovPrepare、lovFilter、lovUpdate
lovPrepare:点击查询图标(手电筒)触发事件(通常这里传入客户过滤条件的参数值) lovFilter:点击弹出页面中的开始按钮触发事件,因此通常在这里加客户过滤条件。 lovUpdate:选择查询结果数据返回到 主Page页面后触发 String event = pageContext.getParameter("event"); if (pageContext.isLovEvent()) { 判断是否是 lovUpdate 【此为从LovInput Page 选择数据返回到 主Page页面后触发】 OAMessageLovInputBean SCategory = (OAMessageLovInputBean)webBean.findChildRecursive("SCategory"); Hashtable lovResults = pageContext.getLovResultsFromSession("CategoryLOV"); OAMessageLovInputBean SForm = (OAMessageLovInputBean)webBean.findChildRecursive("SForm"); ShapeVOImpl formVO = (ShapeVOImpl)am.findViewObject("ShapeVO1"); if ("类别1".equals(lovResults.get("Description"))) { formVO.setWhereClause("FlexValue in ('形态1','形态2')"); formVO.executeQuery(); } }
8、jdeveloper数据库连接
Business Components和Oracle Applications
9、am方法调用另一个am
ApplicationModule ss = am.findApplicationModule("SubInvLovAM1"); SubInvOrgLovVOImpl vo = (SubInvOrgLovVOImpl)ss.findViewObject("SubInvOrgLovVO1");
10、职责与库存组织视图 CUX_INV_USE_UNIT_V
am.getOADBTransaction().getResponsibilityId()--职责 am.getOADBTransaction().getResponsibilityApplicationId()--应用开发员
11、调用函数:
String sqlStr="{? = call cux_common_wyb_pkg.outbillcancelchecksatus(?,?)}";CallableStatement proc = null;String v_result = null;OADBTransaction tr = getOADBTransaction();proc = tr.createCallableStatement(funcStr, 1);try {//注册返回类型proc.registerOutParameter(1, Types.VARCHAR);proc.setString(2, idOne);proc.setString(3, idTwo);proc.execute(); //执行v_result = proc.getString(1); //获得结果proc.close();} catch (SQLException e) {throw new OAException("执行存储过程出现错误:" + funcStr, OAException.ERROR);}
12、调用数据库存储过程用这种方式
CallableStatement st = null; String x_succ_flag; String x_error_msg;String stmt = "begin " + strImportPkg + "(p_file_id => :1," +"p_template_id => :2, " +"x_succ_flag => :3, " +"x_error_msg => :4); " + "end;"; OADBTransaction tr = getOADBTransaction();st = tr.createCallableStatement(stmt, 1); try { // Bind the input parameters //Integer.parseInt st.setString(1, fileId); st.setString(2, templateCode); // Register return variables st.registerOutParameter(3, Types.VARCHAR); st.registerOutParameter(4, Types.VARCHAR); st.execute(); // Assign returned values to variables x_succ_flag = st.getString(3); x_error_msg = st.getString(4); st.close();} catch (SQLException e){ //throw OAException.wrapperException(e); throw new OAException("执行存储过程出现错误:" + stmt, OAException.ERROR);}
13、提示消息
EO方面字段验证抛出异常http://www.cnblogs.com/eastsea/p/4729709.html
OAException(String appShortName,//应用短名
String messageName, //消息名称
MessageToken[] messageTokens,//消息参数
byte messageType, //异常类型
Exception[] details)//异常明细
可以省略其中部分参数,例如: OAException(String messageName)
OAException(String messageName, byte messageType)
OAException(String messageName, MessageToken[],byte messagType)
OAException message =
new OAException("messageStr", OAException.CONFIRMATION);
pageContext.putDialogMessage(message);
//提示消息(类似抛出异常消息)
String msg =am.getOADBTransaction().getMessage("CUX","CUX_SELECT_ONE_DATA",null);
//msg可以直接是中文
throw new OAException(msg,OAException.WARNING);
消息定义都建在CUX应用产品下面:
throw new OAException("AK","FWK_TBX_CATEGORY_NOT_FOUND");最简单方式
select * from fnd_application whereapplication_short_name ='CUX'
update Fnd_New_Messages set application_id=20003 where message_name like'CUX%';
一个是查application_id查到了以后就update)
同时消息提示可以传入参数
MessageToken[] tokens = { new MessageToken("COLNAME","仓库") };
throw new OAException(shortName, infoName,tokens, OAException.WARNING,null);
1)、CuxMsgUtils.actWarningInfo("OP","发送
","CUX",CuxMsgConstants.CUX_MSG_OPERATE_SUCCEED);
//只有状态为1(登录)、3(待转发仓库)、A(打回采购中心)的数据可以发送 2)、CuxMsgUtils.actWarningInfo("STATUS","登录、待转发仓库、打回采购中心","CUX",CuxMsgConstants.CUX_MSG_ONLY_STATUS_OPERATE);
14、webBean子类:
OAMessageTextInputBeanOAMessageLovInputBeanOAMessageDateFieldBeanOAFormValueBeanOAMessageCheckBoxBeanOAMessageChoiceBeanOAMessageStyledTextBeanOASubmitButtonBeanOAButtonBean OABodyBean
15、各大网站
http://www.codepub.com/源代码 http://docs.oracle.com/cd/A97337_01/ias102_otn/buslog.102/bc4j/jboerrormessages.html#55003 JBO错误上这个地址一下就知道是什么错误的还有解决办法
转载于:https://www.cnblogs.com/AI-xiaocai/p/11482098.html
相关资源:JAVA上百实例源码以及开源项目