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

解决方案:

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实现校验功能的更多相关文章

  1. MD5工具类,提供字符串MD5加密、文件MD5值获取(校验)功能

    MD5工具类,提供字符串MD5加密(校验).文件MD5值获取(校验)功能 : package com.yzu.utils; import java.io.File; import java.io.Fi ...

  2. vue+element表单校验功能

    要实现这个功能其实并不难,element组件直接用就可以, 但是我在使用过程中碰到了几个坑,就记录下来,分享给大家,避免落坑,话不多说,直接上过程...... 表单校验功能:   实现这个功能,总共分 ...

  3. 痞子衡嵌入式:在IAR开发环境下为工程开启CRC完整性校验功能的方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下为工程开启CRC完整性校验功能的方法. CRC校验在嵌入式领域里的应用非常广,比如在通信领域,CRC检验值可以作为数据 ...

  4. 痞子衡嵌入式:一次利用IAR自带CRC完整性校验功能的实践(为KBOOT加BCA)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是利用IAR自带CRC完整性校验功能的一次实践(为KBOOT加BCA). 痞子衡之前写过两篇关于IAR中自带CRC校验功能的文章 < ...

  5. [JavaScript] 实现简单的表单数据校验功能

    实现表单数据校验功能 因为项目用的UI库功能太少,表单不具备校验功能,所以自己写了一个,只有一个文件. 使用 import { required, email, useValidate } from ...

  6. Spring AOP 实现功能权限校验功能

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 使用拦截器实现未登录时跳转到登录界面的功能 1 拦截器SecurityInterceptor 2spring-mvcxml拦 ...

  7. 基于Spring Aop实现类似shiro的简单权限校验功能

    在我们的web开发过程中,经常需要用到功能权限校验,验证用户是否有某个角色或者权限,目前有很多框架,如Shiro Shiro有基于自定义登录界面的版本,也有基于CAS登录的版本,目前我们的系统是基于C ...

  8. form表单的密码是否一致校验功能

    这是form类表单,自定义的form表单,需要重写钩子函数 """ forms类表单 """ # 校验密码是否一致 from django. ...

  9. JavaWeb网上图书商城完整项目--day02-6.ajax校验功能之页面实现

    1 .现在我们要在regist.js中实现ajax的功能,使用用户名到后台查询是否注册,邮箱是否到后台注册,验证码是否正确的功能 我们来看regist.js的代码 //该函数在html文档加载完成之后 ...

随机推荐

  1. Oracle常用的SQL方法总结

    在项目中一般需要对一些数据进行处理,以下提供一些基本的SQL语句: 1.基于条件的插入和修改:需要在表中插入一条记录,插入前根据key标识判断.如果标识符不存在,则插入新纪录,如果标识符存在,则根据语 ...

  2. 弹幕文化与HTML5

    分享人:herry 弹幕篇:弹幕文化与HTML5 说说弹幕 弹幕文化 1什么是弹幕? 弹(dàn)幕(mù)在国内兴起已经有个把年了,相信很多朋友都差不多知道弹幕这个东西. 弹幕系统最初的起源是一家日 ...

  3. Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)

    Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...

  4. 在Mac上开发使用yeoman构建Asp.net core项目并且实现分层引用

    1.Yeoman? yeoman是一个自动化脚手架工具.它提供很多generator,generator相当于VisualStudio的模板,用来初始化项目.更多的就不多说了,写一遍都写不完,自己看吧 ...

  5. WinForm 曲线图控件

    1. http://oxyplot.org/

  6. WCF入门教程(二)如何创建WCF服务

    WCF入门教程(二)从零做起-创建WCF服务 通过最基本的操作看到最简单的WCF如何实现的.这是VS的SDK默认创建的样本 1.创建WCF服务库 2.看其生成结构 1)IService1.cs(协议) ...

  7. 基于CkEditor实现.net在线开发之路(3)常用From表单控件介绍与说明

    上一章已经简单介绍了CKEditor控件可以编写C#代码,然后可以通过ajax去调用,但是要在网页上面编写所有C#后台逻辑,肯定痛苦死了,不说实现复杂的逻辑,就算实现一个简单增删改查,都会让人头痛欲裂 ...

  8. jenkins中使用tfs插件做增量的版本发布部署

    一 配置介绍 使用jenkins的tfs插件进行,源码的下载,编译,打包的操作,然后使用windows的批处理命令,在局域网内(或者本机)把打包的release包,删除掉web.config,然后靠配 ...

  9. Lind.DDD.Messaging框架通讯组件介绍

    回到目录 大 家好,今天有时间来介绍一下Lind.DDD框架里的消息机制,消息发送这块一般的实现方法是将Email,SMS等集成到一个公用类库里,而本身 Email和SMS没什么关系,它们也不会有什么 ...

  10. c#模拟js escape方法

    public static string Escape(string s) { StringBuilder sb = new StringBuilder(); byte[] ba = System.T ...