通过重构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文档加载完成之后 ...
随机推荐
- CQRS, Task Based UIs, Event Sourcing agh!
原文地址:CQRS, Task Based UIs, Event Sourcing agh! Many people have been getting confused over what CQRS ...
- CSS技巧(一):清除浮动
什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高 ...
- Nancy之基于Nancy.Hosting.Self的小Demo
继昨天的Nancy之基于Nancy.Hosting.Aspnet的小Demo后, 今天来做个基于Nancy.Hosting.Self的小Demo. 关于Self Hosting Nancy,官方文档的 ...
- css毛玻璃效果
毛玻璃其实就是磨砂玻璃,能够模糊的看清背后的风景,让人感觉有种朦胧美,让界面看上去有些层次感. 比如: 高大上啊,接下来肯定是眼馋手痒的过程... 当然,用ps搞一个全景毛玻璃背景毫无疑问是最省事的, ...
- NPOI读取Excel帮助类,支持xls与xlsx,实现公式解析,空行的处理
NPOI读取Excel(2003或者2010)返回DataTable.支持公式解析,空行处理. /// <summary>读取excel /// 默认第一行为表头 /// </sum ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- Java代码优化(长期更新)
前言 2016年3月修改,结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化.在修改之前,我的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸 ...
- 【linux草鞋应用编程系列】_6_ 重定向和VT100编程
一.文件重定向 我们知道在linux shell 编程的时候,可以使用文件重定向功能,如下所示: [root@localhost pipe]# echo "hello world&q ...
- String和Date、Timestamp之间的转换
一.String与Date(java.util.Date)互转 1.1 String -> Date String dateStr = "2010/05/04 12:34:23&quo ...
- 【JAVA并发编程实战】9、锁分段
package cn.study.concurrency.ch11; /** * 锁分段 * @author xiaof * */ public class StripedMap { //同步策略:就 ...