通过重构VO实现校验功能
现有个需求,需要添加供应商的页面校验功能,当填写一二级时,供应商是必填项,并且所填的供应商必须是二级分类下的,否则下一步和保存过不去:

解决方案:
1.在页面AM的XXXImpl.java中,
加入引用:import oracle.jbo.ViewObject;
加入如下方法:
public void lastCheck() {
ZReqLinesVOImpl zreqVO = this.getZReqLinesVO();
int rowCount = zreqVO.getRowCount();
OAException rowException=null;
// System.out.println("1");
// System.out.println("rowCount:"+rowCount);
for (int i = 0; i < rowCount; i++)
{
ZReqLinesVORowImpl vendorRow = (ZReqLinesVORowImpl)zreqVO.getRowAtRangeIndex(i);
if(vendorRow.getCate1() != null && vendorRow.getVendorName() == null)//当一二级不为空,供应商名称为空时,提示。
{//当填写一二级时,供应商为必填项。请输入第i+1行的供应商。
rowException = new OAException("\u5f53\u586b\u5199\u4e00\u4e8c\u7ea7\u65f6\uff0c\u4f9b\u5e94\u5546\u4e3a\u5fc5\u586b\u9879\u3002"+"\u8bf7\u8f93\u5165\u7b2c"+(i+1)+"\u884c\u7684\u4f9b\u5e94\u5546\u3002",OAException.INFORMATION);
throw rowException;
}
if(vendorRow.getVendorName() != null)//当供应商名称不为空时,判断所填的值是否为数据库里存在的供应商
{
ViewObject tempVO = this.findViewObject("CuxPoHtVendorTempVO");
if (tempVO == null)
{
StringBuffer stmt = new StringBuffer(1000);
String sql = "";
sql += "select distinct t2.vendor_name,substr(t1.Detl_Path||'.',instr(t1.Detl_Path||'.','.',1)+1,instr(t1.Detl_Path||'.','.',1,2)-instr(t1.Detl_Path||'.','.',1,1)-1) detl_id";
sql +=" from SMG_ACT_SUPPLIER_TYPE t1,";
sql +=" po_vendors t2,";
sql +=" SMG_SYS_SUP_CLAS_DETAIL t3";
sql +=" where t1.sup_id = t2.segment1";
sql +=" and t3.detl_id = t1.detl_id";
sql +=" and decode(type_expiry_date,null,sysdate,to_date(substr(type_expiry_date,1,8),'yyyymmdd')) >= sysdate";
sql +=" and decode(TYPE_END_TIME,null,sysdate,to_date(substr(TYPE_END_TIME,1,8),'yyyymmdd')) >= sysdate";
sql +=" and decode(type_temp_time,null,sysdate,to_date(substr(type_temp_time,1,8),'yyyymmdd')) >= sysdate";
sql +=" and t2.attribute11='1'";
stmt.append(sql);
// System.out.println(sql);
tempVO = this.createViewObjectFromQueryStmt("CuxPoHtVendorTempVO", stmt.toString());//根据上述sql,创建个临时VO
}
String whareString=" 1=1 ";
whareString = whareString + " and VENDOR_NAME = " + "'" + vendorRow.getVendorName() + "'";//把供应商名称当做where条件查询
whareString = whareString + " and DETL_ID = " + "'" + vendorRow.getCategory2() + "'";//把二级的detl_id当做where条件查询
tempVO.setWhereClause(null);
tempVO.setWhereClauseParams(null);
tempVO.setWhereClause(whareString);
tempVO.executeQuery();
// System.out.println(vendorRow.getVendorName());
// System.out.println(vendorRow.getCategory2());//____________
// System.out.println("2");
Row tempRow = tempVO.first();//判断是否有供应商,若没有,tempRow为空
// System.out.println(tempRow != null);
if (tempRow == null)//当一级二级不为空,且供应商为随便填的值(即tempRow为空),提示。
{
// System.out.println("3");
//当填写一二级时,供应商为必填项。请输入第i+1行的供应商。
rowException = new OAException("\u5f53\u586b\u5199\u4e00\u4e8c\u7ea7\u65f6\uff0c\u4f9b\u5e94\u5546\u4e3a\u5fc5\u586b\u9879\u3002"+"\u8bf7\u8f93\u5165\u7b2c"+(i+1)+"\u884c\u7684\u4f9b\u5e94\u5546\u3002",OAException.INFORMATION);
throw rowException;
}
}
}
}
2.在控制“上一步”、“下一步”和“保存”按钮页面的CO中,调用上述方法:
OAApplicationModule am = pageContext.getApplicationModule(webBean);
//-------供应商校验-------
am.invokeMethod("lastCheck");
//------------------------
通过重构VO实现校验功能的更多相关文章
- MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能
MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...
- vue+element表单校验功能
要实现这个功能其实并不难,element组件直接用就可以, 但是我在使用过程中碰到了几个坑,就记录下来,分享给大家,避免落坑,话不多说,直接上过程...... 表单校验功能: 实现这个功能,总共分 ...
- 痞子衡嵌入式:在IAR开发环境下为工程开启CRC完整性校验功能的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下为工程开启CRC完整性校验功能的方法. CRC校验在嵌入式领域里的应用非常广,比如在通信领域,CRC检验值可以作为数据 ...
- 痞子衡嵌入式:一次利用IAR自带CRC完整性校验功能的实践(为KBOOT加BCA)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是利用IAR自带CRC完整性校验功能的一次实践(为KBOOT加BCA). 痞子衡之前写过两篇关于IAR中自带CRC校验功能的文章 < ...
- [JavaScript] 实现简单的表单数据校验功能
实现表单数据校验功能 因为项目用的UI库功能太少,表单不具备校验功能,所以自己写了一个,只有一个文件. 使用 import { required, email, useValidate } from ...
- Spring AOP 实现功能权限校验功能
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 使用拦截器实现未登录时跳转到登录界面的功能 1 拦截器SecurityInterceptor 2spring-mvcxml拦 ...
- 基于Spring Aop实现类似shiro的简单权限校验功能
在我们的web开发过程中,经常需要用到功能权限校验,验证用户是否有某个角色或者权限,目前有很多框架,如Shiro Shiro有基于自定义登录界面的版本,也有基于CAS登录的版本,目前我们的系统是基于C ...
- form表单的密码是否一致校验功能
这是form类表单,自定义的form表单,需要重写钩子函数 """ forms类表单 """ # 校验密码是否一致 from django. ...
- JavaWeb网上图书商城完整项目--day02-6.ajax校验功能之页面实现
1 .现在我们要在regist.js中实现ajax的功能,使用用户名到后台查询是否注册,邮箱是否到后台注册,验证码是否正确的功能 我们来看regist.js的代码 //该函数在html文档加载完成之后 ...
随机推荐
- DIB位图(Bitmap)的读取和保存
设备无关位图(Device Independent Bitmap)是可以保存在磁盘的位图文件,可以从磁盘读取到内存或者从内存保存到磁盘上.它的文件结构是标准化的,可以在Windows/Linux/Un ...
- 在ASP.NET Core使用Middleware模拟Custom Error Page功能
一.使用场景 在传统的ASP.NET MVC中,我们可以使用HandleErrorAttribute特性来具体指定如何处理Action抛出的异常.只要某个Action设置了HandleErrorAtt ...
- 实现iOS图片等资源文件的热更新化(三):动态的资源文件夹
简介 此文,将尝试动态从某个不确定的文件夹中加载资源文件.文章,会继续完善自定义的 imageNamed 函数,并为下一篇文章铺垫. 这么做的意义 正如我们经常所说的那样,大多数情景知道做事的意义往往 ...
- [Web API] Web API 2 深入系列(3) 激活HttpController
目录 HttpController 创建HttpController IAssembliesResolver IHttpControllerTypeResolver HttpControllerTyp ...
- Xamarin.Android之封装个简单的网络请求类
一.前言 回忆到上篇 <Xamarin.Android再体验之简单的登录Demo> 做登录时,用的是GET的请求,还用的是同步, 于是现在将其简单的改写,做了个简单的封装,包含基于Http ...
- DataTable数据批量写入数据库三种方法比较
DataTable数据批量写入数据库三种方法比较 标签: it 分类: C#1) insert循环插入:2) sqldataadapter.update(dataset,tablename); ...
- c#动态加载卸载DLL的方法
这篇文章介绍了c#动态加载卸载DLL的方法,有需要的朋友可以参考一下 c#中通过反射可以方便的动态加载dll程序集,但是如果你需要对dll进行更新,却发现.net类库没有提供卸载dll程序集的方法.在 ...
- Entity Framework 代码先行之约定配置
要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就 ...
- SOA的浅析
曾今SOA的概念犹如今日“云计算.大数据”一样,被炒得火热,不少企业便纷纷响应,并宣称会拥抱和实施SOA.而事实上,业界出现了两种极端:一种是由于各类文章和书籍关于SOA的描述往往太过抽象,再加上各大 ...
- Xdebug文档(二)变量显示特性
Xdebug能替代PHP的var_dump()函数来显示变量值.xdebug的版本包含对不同数据类型作数组元素/对象属性.最大深度和字符串长度以不同颜色标识.这里也有一些功能能很好地处理变量显示. 相 ...