ADF系列-2.EO的高级属性
在上一篇博客 ADF系列-1.EO的各个属性初探 中介绍了EO的一些常用简单属性。本次将介绍EO中一些比较常用的一些高级属性
一.基于Sequence创建EO,一下介绍三种方式(以HR用户的Employee表为例)
1.双击EmployeesEO的主键(EmployeeId),打开到Entity Attribute选项卡,value type选中Expression,单击Edit,在Expression中输入
(new oracle.jbo.server.SequenceImpl("EMPLOYEES_SEQ", adf.object.getDBTransaction())).getSequenceNumber()
其中EMPLOYEES_SEQ是在数据库中定义的Sequence

2.先生产EmployeesEOImpl.java文件,后添加自定义的方法如下
protected oracle.jbo.domain.Number nextValFormId(String sequenceName) {
SequenceImpl s = new SequenceImpl(sequenceName,getDBTransaction());
return s.getSequenceNumber();
}
然后把 nextValFormId方法注册到Groovy表达式中,入下图

3.在双击EmployeeId,在Custom Properties选项卡中,添加EMPLOYEES_SEQ

然后在EmployeesEOImpl中复写create方法
/**
* Add attribute defaulting logic in this method.
* @param attributeList list of attribute names/values to initialize the row
*/
protected void create(AttributeList attributeList) {
super.create(attributeList);
for (AttributeDef def : getEntityDef().getAttributeDefs()) {
String sequenceName = (String) def.getProperty("SequenceName");
if (sequenceName != null) {
SequenceImpl s = new SequenceImpl(sequenceName, getDBTransaction());
setAttribute(def.getIndex(), s.getSequenceNumber());
}
}
}
二.增加验证
1.Attribute Level validationg rule:属性级验证规则,在更新实体属性之前触发
(1).使用内建验证,例如List验证如下

(2).自定义验证
新建一个Validation Rule

所生产的代码如下,绿色部分就是验证逻辑
package com.test.model.rule; import oracle.jbo.ValidationException;
import oracle.jbo.rules.JboValidatorContext;
import oracle.jbo.rules.JboValidatorInterface; public class TestValidationRule implements JboValidatorInterface {
private String description = ""; public TestValidationRule() {
} /**
* Return true if value is valid.
*/
public boolean validateValue(Object value) {
return true;
} /**
* Invoked by framework for validation.
*/
public void validate(JboValidatorContext ctx) {
if (!validateValue(ctx.getNewValue())) {
throw new ValidationException("com.test.model.rule.TestValidationRule validation failed");
}
} /**
* Description of what this class validates.
*/
public String getDescription() {
return description;
} /**
* Description of what this class validates.
*/
public void setDescription(String str) {
description = str;
}
}
然后点击EO中的属性,选择

2.Entity Level validation rule:实体级验证,既可以在改变了行选择时触发,也可以在提交事物时触发具体应用
(1).使用内建验证(EO定义xml -->Business rules --> Entity Validators添加按钮)

(2).自建验证java类

扩展改方法代码如下,必须FirtName为"sun"才能验证通过
/**
* Validation method for EmployeesEO.
*/
public boolean validateEmployeesEO() {
if("sun".equals(this.getFirstName())){
return true ;
}else{
return false;
}
}
为该验证注册如下错误消息

测试结果如下截图

ADF系列-2.EO的高级属性的更多相关文章
- ADF系列-1.EO的各个属性初探
ADF中的EO可以看做关系型数据库中表的java展现形式. 1.Type 此处的Type是java的类型,而需要映射的是数据库的类型,两者之间存在一些差异,各个映射关系如下: 数据库列类型 BC 属性 ...
- Expo大作战(二十三)--expo中expo kit 高级属性(没干货)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
ASP.NET MVC深入浅出(被替换) 一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...
- SpringBoot系列教程之事务传递属性
200202-SpringBoot系列教程之事务传递属性 对于mysql而言,关于事务的主要知识点可能几种在隔离级别上:在Spring体系中,使用事务的时候,还有一个知识点事务的传递属性同样重要,本文 ...
- 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性
本文转载自:http://blog.sina.com.cn/s/blog_5d65a16901011kom.html 关键字:内省.JavaBean.PropertyDescriptor类.Int ...
- C# 操作 Word 修改word的高级属性中的自定义属性2
word的类库使用的是word2007版本的类库,类库信息见下面图片,折腾了半天,终于找到入口,网上 很多说的添加或者修改word的高级属性中的自定义属性都是错误的,感觉都是在copy网上的代码,自己 ...
- sed修炼系列(三):sed高级应用之实现窗口滑动技术
html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...
- XML系列之--Linq操作带属性的XML(四)
关于XML,之前解析过电文收发方面的,就是所谓的带表头.前缀(命名空间)SOAP格式.这次需求是解析一个xml的模板(xls内容),然后填充数据,最后保存.需要时可转换xls.pdf等文件.关于这种带 ...
- WPF系列 —— 控件添加依赖属性(转)
WPF系列 —— 控件添加依赖属性 依赖属性的概念,用途 ,如何新建与使用.本文用做一个自定义TimePicker控件来演示WPF的依赖属性的简单应用. 先上TimePicker的一个效果图. 概念 ...
随机推荐
- git 检查是否有commit到本地但还没push的代码
使用 git status 命令可以得到以下结果 $ git status On branch dev_getTicketCnt Your branch is ahead of 'origin/mas ...
- jstl缺包时的报错
jsp中:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 报错: ...
- Silverlight & Blend动画设计系列八:拖放(Drag-Drop)操作与拖放行为(DragBehavior)
在Silverlight中自身并没有提供拖放功能的相关实现,要实现拖放功能得借助其事件支持(MouseLeftButtonDown.MouseLeftButtonUp和MouseMove)来完成,实际 ...
- System.Web.Mvc.HtmlHelper<dynamic>”没有名为“Partial”的适用方法,但似乎有一个具有该名称的扩展方法。扩展方法不能进行动态调度。请考虑强制转换动态参数,或调用该扩展方法但不使用扩展方法语法。
MVC 调用分布式图,传了没有定义的参数,,参数写得不对
- pm2在node中的应用
pm2 是一个带有负载均衡功能的Node应用的进程管理器,当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, pm2是完美的. 主要特性: 内建负载均衡(使用Nod ...
- Hadoop生态体系
Hadoop路线 HDFS 分布式文件系统 MapReduce 分布式编程框架 ZooKeeper 分布式协调框架 Hive 非关系型数据仓库 Flume 日志采集框架
- CentOS新增硬盘,重新扫描总线
Centos 新增硬盘以后,系统不能自动进行识别. 1. 由于不知道新增硬盘挂载的位置,可以先查看现有硬盘挂载的适配器. [root@localhost ~]# ls -l /sys/block/sd ...
- JDBC连接数据库方法的封装,以及查询数据方法的封装
(在上一篇文章中,我们详细的介绍了连接数据库的方法,以及eclipse操作数据库信息的相关方法,在这里我们将主要讲封装.) 主要内容: 一般的连接数据库测试 把连接数据库的方法封装成一个类和测试 一个 ...
- RocketMQ读书笔记3——消费者
[不同类型的消费者] DefaultMQPushConsumer 由系统控制读取操作,收到消息后自动调用传入的处理方法来处理. DefaultMQPullConsumer 读取操作中的大部分功能由使用 ...
- Java链接 Oracle11g R2
菜鸟学习Oracle数据库,使用Java代码链接数据库. 首先要配置Eclipse,在新建的工程中,Package Explorer->工程名->Build path->Add ex ...