标准的EO验证提示错误不够完整,抛出自定义的异常。
我们通常会在EO里面对某些数据进行验证,比如在邀请供应商注册的时候,ORACLE标准逻辑会验证被邀请的供应商是否已经存在。
其验证逻辑在
oracle.apps.pos.schema.server.SupplierRegEOImpl
public void setSupplierName(String value)
{
SupplierRegEntityExpert supplierregentityexpert = getSupplierRegEntityExpert(getOADBTransaction());
if (!supplierregentityexpert.isSupplierValid(value, getSupplierRegId()))
{
throw new OAAttrValException(121, getEntityDef().getFullName(), getPrimaryKey(), "SupplierName", value, "POS", "POS_SUPPREG_EO_ERR1");
} else
{
setAttributeInternal(2, value);
return;
}
}
现由于客户觉得标准的异常提示不够明显,无法区分此供应商是已经正式存在的供应商,还是已经被其他人邀请过的供应商。
所以现决定在保存的时候根据输入的供应商名称进行逻辑判断。
经验证,逻辑判断不能写在processFormRequest中,会先执行EO中的验证。
不过可以写在processFormData中,因为processFormData中的方法是在POST阶段执行,所以不会触发EO中的验证。
新建客户化CO继承原有标准CO
public class CuxSuppRegisterSupplierCO extends SuppRegisterSupplierCO {
}
public void processFormData(OAPageContext pageContext,OAWebBean webBean){
super.processFormData(pageContext, webBean);
String str1 = pageContext.getParameter("event");
if (("sendInvitation".equals(str1)) || ("SaveNContinueBtnEvent".equals(str1)))
{ OAViewObject SupplierRequestsVO = (OAViewObject)pageContext.getApplicationModule((OAWebBean)webBean.findChildRecursive("RegSupplierRN")).findViewObject("SupplierRequestsVO");
String SupplierName = pageContext.getParameter("SupplierName");
Number SupplierRegId = (Number)SupplierRequestsVO.first().getAttribute("SupplierRegId");
LogUtil.of("validSupplierName ",pageContext).print(pageContext);
validSupplierName(pageContext,webBean,SupplierName,SupplierRegId);
} }
public void validSupplierName(OAPageContext pageContext,OAWebBean webBean, String SupplierName,Number SupplierRegId){
LogUtil.of("validSupplierName fangfa ",pageContext).print(pageContext);
OraclePreparedStatement oraclepreparedstatement = null;
OracleResultSet oracleresultset = null;
OAApplicationModule am = pageContext.getApplicationModule(webBean);
try{
oraclepreparedstatement = (OraclePreparedStatement)am.getOADBTransaction().createPreparedStatement(" select vendor_id \n" +
"from po_vendors \n" +
"where upper(vendor_name) = upper(:1)\n" +
"and (start_date_active < sysdate OR start_date_active is null) \n" +
"and (end_date_active > sysdate OR end_date_active is null) \n" +
"and rownum = 1", 1);
oraclepreparedstatement.setObject(1,SupplierName);
oracleresultset = (OracleResultSet)oraclepreparedstatement.executeQuery();
if(oracleresultset.next()){
throw new OAException("POS_SUPPREG_EO_ERR1",OAException.ERROR);
}
}
catch(Exception exception1)
{
throw OAException.wrapperException(exception1);
} try{
oraclepreparedstatement = (OraclePreparedStatement)am.getOADBTransaction().createPreparedStatement("SELECT hou.attribute18,\n" +
" papf.full_name\n" +
" FROM pos_supplier_registrations psr,\n" +
" hr_all_organization_units hou,\n" +
" fnd_user fu,\n" +
" per_all_people_f papf\n" +
" WHERE upper(psr.supplier_name) = upper(:1)\n" +
" AND psr.supplier_reg_id <> :2\n" +
" AND psr.registration_status NOT IN ('REJECTED',\n" +
" 'DRAFT',\n" +
" 'RIF_SUPPLIER')\n" +
" AND rownum = 1\n" +
" AND psr.created_by = fu.user_id(+)\n" +
" AND psr.ou_id = hou.organization_id\n" +
" AND fu.employee_id = papf.person_id(+)\n" +
" AND SYSDATE BETWEEN nvl(papf.effective_start_date,\n" +
" SYSDATE - 1) AND nvl(papf.effective_end_date,\n" +
" SYSDATE + 1)\n", 2);
oraclepreparedstatement.setObject(1,SupplierName);
oraclepreparedstatement.setObject(2,SupplierRegId);
oracleresultset = (OracleResultSet)oraclepreparedstatement.executeQuery();
if(oracleresultset.next()){
String OrgName = oracleresultset.getString(1);
String FullName = oracleresultset.getString(2);
MessageToken[] tokens = { new MessageToken("ORG_NAME", OrgName),
new MessageToken("FULL_NAME", FullName) };
OAException exceptionMessage = new OAException("CUX","CUX_SUPPLIER_HAS_BEEN_INVITED",tokens,OAException.ERROR,null);
throw exceptionMessage; //PS1.使用throw直接抛出异常,会导致页面上直接基于EO的字段的数据不会被保留,且不会抛出EO中的验证。
// pageContext.putDialogMessage(exceptionMessage); //PS2.使用putDialogMessage(),页面上的数据被保留,且执行EO中的验证并抛出。
}
}
catch(Exception exception1)
{
throw OAException.wrapperException(exception1);
} }
参考资料:
1.重新整理后的Oracle OAF学习笔记——5.应用构建基础之实现控制器
标准的EO验证提示错误不够完整,抛出自定义的异常。的更多相关文章
- oracle 抛出自定义错误(网上找的例子)
CREATE OR REPALCE TRIGGER minimun_age_checkBEFORE INSERT ON employeeFOR EACH ROWBEGIN IF ADD_MONTHS( ...
- Spring验证的错误返回------BindingResult
Spring验证的错误返回------BindingResult 参考资料:http://www.mkyong.com/spring-mvc/spring-mvc-form-errors-tag-ex ...
- jQuery validate运作流程以及重复提示错误问题
一,运作流程 jQuery validate要想运作,首先要加载相应的js <script type="text/javascript" src="/js/clas ...
- MVC与Validate验证提示的样式修改
MVC中使用Validate的验证,要修改错误提示样式一共有3处需要修改,否则就不太完美了: MVC中的Validate的验证机制只用在后台写一次,就可以完成前台和后台的完美验证,前台的验证主要是依靠 ...
- jquery.validate提示错误方法
修改jquery.validate提示错误方法,将错误信息用弹出框提示 <script src="@Url.Content("~/Scripts/jquery.validat ...
- Springboot学习05-自定义错误页面完整分析
Springboot学习06-自定义错误页面完整分析 前言 接着上一篇博客,继续分析Springboot错误页面问题 正文 1-自定义浏览器错误页面(只要将自己的错误页面放在指定的路径下即可) 1-1 ...
- 今天遇到一件开心事,在eclipse编写的代码在命令窗口中编译后无法运行,提示 “错误: 找不到或无法加载主类”
java中带package和不带package的编译运行方式是不同的. 首先来了解一下package的概念:简单定义为,package是一个为了方便管理组织java文件的目录结构,并防止不同java文 ...
- mac 下 使用 java运行 class 文件 总是提示 “错误: 找不到或无法加载主类”的解决方法
发现问题 切换到mac平台后,突然想写点程序运行在mac下,想到mac自带java,会方便好多.不过在这过程中遇到了麻烦: 总是提示 “错误: 找不到或无法加载主类” 工程结构 查了好久,终于找到原型 ...
- .NetCore使用FluentValidation实现友好验证提示
Nuget包导入FluentValidation.AspNetCore 官方的用法是在services中添加如下来操作 services.AddMvc().AddFluentValidation(co ...
随机推荐
- 关于sqlite使用场景
对于sqlite,实际中从来没有用过,也几乎没有考虑过其使用场景,更不要说专门去研究它了,今天看最新的数据库流行度排行榜的时候,发现sqlite的长期趋势好像一直在第十位左右徘徊,特地搜索了下其使用场 ...
- java service wrapper日志参数设置及优化
一般在容器比如tomcat/weblogic中运行时,我们都是通过log4j控制日志输出的,因为我们现在很多服务端使用java service wrapper(至于为什么使用jsw,原先是比较排斥使用 ...
- Ubuntu Linux系统环境变量配置文件
Ubuntu Linux系统环境变量配置文件: /etc/profile : 在登录时,操作系统定制用户环境时使用的第一个文件 ,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. ...
- 20145327《网络对抗》——注入shellcode并执行和Return-to-libc攻击深入
20145327<网络对抗>--注入shellcode并执行 准备一段Shellcode 老师的shellcode:\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68 ...
- JavaScript:正则表达式 应用
1. var data = "<table id=\"test\"><tr class=\"light\"><td> ...
- 奇怪的分式|2014年蓝桥杯B组题解析第六题-fishers
奇怪的分式 上小学的时候,小明经常自己发明新算法.一次,老师出的题目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png) 老师刚想批评他,转念 ...
- [web开发] - 一些注解的解释
@WebServlet替代了原本web.xml中配置的url拦截 可以直接在servlet上添加该注解,加入("/hello")类似的路径 但在controller层(Spring ...
- [Pytorch]Pytorch中图像的基本操作(TenCrop)
转自:https://www.jianshu.com/p/73686691cf13 下面是几种常写的方式 第一种方式 normalize = transforms.Normalize([0.485, ...
- 自整理的jquery.Validate验证表达式
自整理几个jquery.Validate验证正则: 1. 只能输入数字和字母 /^[0-9a-zA-Z]*$/g jQuery.validator.addMethod("letters ...
- POJ 2104 K-th Number(主席树模板题)
http://poj.org/problem?id=2104 题意:求区间$[l,r]$的第k小. 思路:主席树不好理解啊,简单叙述一下吧. 主席树就是由多棵线段树组成的,对于数组$a[1,2...n ...