在上一篇博客 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的高级属性的更多相关文章

  1. ADF系列-1.EO的各个属性初探

    ADF中的EO可以看做关系型数据库中表的java展现形式. 1.Type 此处的Type是java的类型,而需要映射的是数据库的类型,两者之间存在一些差异,各个映射关系如下: 数据库列类型 BC 属性 ...

  2. Expo大作战(二十三)--expo中expo kit 高级属性(没干货)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  3. ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪

    ASP.NET MVC深入浅出(被替换)   一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...

  4. SpringBoot系列教程之事务传递属性

    200202-SpringBoot系列教程之事务传递属性 对于mysql而言,关于事务的主要知识点可能几种在隔离级别上:在Spring体系中,使用事务的时候,还有一个知识点事务的传递属性同样重要,本文 ...

  5. 内省、JavaBean、PropertyDescriptor类、Introspector类、BeanUtils工具包、注解、Rentention、Target、注解的基本属性和高级属性

      本文转载自:http://blog.sina.com.cn/s/blog_5d65a16901011kom.html 关键字:内省.JavaBean.PropertyDescriptor类.Int ...

  6. C# 操作 Word 修改word的高级属性中的自定义属性2

    word的类库使用的是word2007版本的类库,类库信息见下面图片,折腾了半天,终于找到入口,网上 很多说的添加或者修改word的高级属性中的自定义属性都是错误的,感觉都是在copy网上的代码,自己 ...

  7. sed修炼系列(三):sed高级应用之实现窗口滑动技术

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  8. XML系列之--Linq操作带属性的XML(四)

    关于XML,之前解析过电文收发方面的,就是所谓的带表头.前缀(命名空间)SOAP格式.这次需求是解析一个xml的模板(xls内容),然后填充数据,最后保存.需要时可转换xls.pdf等文件.关于这种带 ...

  9. WPF系列 —— 控件添加依赖属性(转)

    WPF系列 —— 控件添加依赖属性 依赖属性的概念,用途 ,如何新建与使用.本文用做一个自定义TimePicker控件来演示WPF的依赖属性的简单应用. 先上TimePicker的一个效果图. 概念 ...

随机推荐

  1. [PY3]——内置数据结构(8)——解构与封装

    ### 解构的理解与用法 ### 解构是python很有特色的一个功能,被很多语言借鉴(例如ES6) # 元素按照顺序赋值给变量 In [31]: lst=list(range(5)) In [32] ...

  2. web.xml配置文件中async-supported报错解决

    项目中配置spring时async-supported报错: 是因为<async-supported>true</async-supported>是web.xml 3.0的新特 ...

  3. 十、集成使用redis

    一.简介 redis是一种非关系型数据库,它的数据结构是key-value的存储形式:能够支持多种类型的数据存储,如:string/list/map/object...等.springboot自然也对 ...

  4. Python基础学习总结(九)

    11测试代码 1.编写函数和类时,还可以编写测试函数,通过测试可以确定代码面对各种输入都能正常工作.在程序中添加新代码时,也可以对其进行测试,确定他们不会破坏程序的既有程序.要经常测试模块. 2.通过 ...

  5. VirtualBox使用Centos7与主机共享文件夹

    最近使用VitrtualBox安装Centos7学习,liunx脚本和一些命令,经过一些研究完成了虚拟机与 主机共享文件夹,虚拟机链接外部网络,主机与虚拟机互相通信.在其中遇到一些我解决的技术问题记录 ...

  6. Effective C++ .07 virtual析构函数的提供

    主要讲了, 1. virtual析构函数的作用与调用顺序 2. 使用时机,并不是使用了继承就要把基类的析构函数变为虚函数(virtual),只有当用于多态目的时才进行一个virtual析构函数的定义. ...

  7. 如何将一个SpringBoot简便地打成一个war包(转)

    为什么要把SpringBoot打成war包 正常情况下SpringBoot项目是以jar包的形式,通过命令行: java -jar demo.jar 来运行的,并且SpringBoot是内嵌Tomca ...

  8. package和package-lock区别;dependencies和devDependencies区别

    package和package-lock package.json: 主要用来定义项目中需要依赖的包 package-lock.json: 在 npm install时候生成一份文件,用以记录当前状态 ...

  9. npm属性笔记

    scripts属性,运行脚本命令的npm命令行缩写,常见如下npm run devnpm run startnpm run build dependencies属性,项目运行时配置模块依赖的模块列表, ...

  10. UX2内核浏览加速技术纲要[带你解决WebView卡顿]

    UX2内核是本人负责主要开发的浏览服务项目,其主要目的是为开发者提供一个简单好用.轻便的网络浏览服务.UX2内核的安卓端是基于WebView进行深度优化的,同时欢迎大家使用这个内核用于app页面或浏览 ...