1-常用约束规则RuleSource的设置方法
 
例如:
addRules(new Rules(ProgramFeeItem.class){
protected void initRules() {
add("rateClass", all(new Constraint[] { required() }));  //required表示,不可为空
add("remark", rules.maxLength(250));     //maxLength约束最大长度250
addMoneyRule(this,"payingSumFee");    
        }
});

2-自定义约束规则方法:
创建AbstractPropertyContraint对象,并实现test和toString方法,test方法用户定义约束规则 ,toString方法用户设置异常信息
 
例如:
addRules(new Rules(ProgramFeeItem.class){
protected void initRules() {
addMoneyRule(this,"payingSumFee");    //addMoneyRule自定义约束规则
        }
});
protected void addMoneyRule(Rules rules,final String datePath){
rules.add(new AbstractPropertyConstraint(datePath) {
@Override
protected boolean test(  //规则检测方法
PropertyAccessStrategy domainObjectAccessStrategy) {
                                
                                 //通过策略获取payingSumFee的值
Money amount = (Money) domainObjectAccessStrategy.getPropertyValue(datePath);
                                //自定义规则Money的范围
return amount.gte(new Money(-9999999999.99D))&&amount.lte(new Money(9999999999.99D));
}
 
@Override
public String toString() {//用户设置异常返回码
return Application.services().getApplicationContext()
.getMessage("gte.-9999999999.99.and.lte.9999999999.99",
new Object[] {},
"gte.-9999999999.99.and.lte.9999999999.99",
Locale.getDefault());
}
});
}
 

3-两控件联动约束规则设置方法:
使用RequireAIfBTrue对象实现, 
public RequireAIfBTrue(String a, String b, Constraint aConstraint, Constraint bContraint,String msgKey) {
其中
 a 要求约束对应的属性
 b 要求约束的前提约束对应的属性
 aConstraint Constraint 要求约束
 bContraint Constraint 要求约束的前提约束
 msgKey String 国际化信息
 
例如:
addRules("receipt",new Rules(ProgramWorkOrder.class) {
protected void initRules() {
add(new RequireAIfBTrue("failureReason", "taskResult", required(),
new Constraint() {    //指定约束规则
public boolean test(Object argument) {     //约束规则设置
TaskResult result = (TaskResult) argument;
if (result != null && result.ordinal() == TaskResult.UNSUCCESS.ordinal()) {
return true;
}
return false;
}
}, "required"));     //required国际化信息
}
});
 

【Java】RuleSource约束常用方法整理的更多相关文章

  1. Java笔试面试题整理第八波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51388516 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  2. Java笔试面试题整理第一波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51151650 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  3. Java 动态写轮眼 SharinganJPanel (整理)

      /** * Java 动态写轮眼 SharingganJPanel (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * 设计声明: * 1.虽然岸本是日本人,而我个人作为其模仿者,依 ...

  4. Java 动态眨眼 EyesJPanel (整理)

    /** * Java 动态眨眼 EyesJPanel (整理) * * 2016-1-2 深圳 南山平山村 曾剑锋 * 注意事项: * 1.本程序为java程序,同时感谢您花费宝贵的时间来阅读本文档: ...

  5. Java 动态太极图 DynamicTaiChi (整理)

    package demo; import java.awt.Color; import java.awt.Graphics; import javax.swing.JFrame; import jav ...

  6. Java Cardioid 心脏形曲线 (整理)

    package demo; import java.awt.Color; import java.awt.Graphics; import javax.swing.JFrame; import jav ...

  7. Python 部分系统类的常用方法整理

    下面是常用的几个系统类的常用方法整理: list: 列表[1, 2,...] set: 集合,无重复元素{1, 2,...} str: 字符串 dict: 字典{a:'a', b:'b',...} T ...

  8. Java笔试面试题整理第六波(修正版)

    转载至:http://blog.csdn.net/shakespeare001/article/details/51330745 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  9. Java笔试面试题整理第五波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51321498 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

随机推荐

  1. ListView优化中ViewHolder要不要定义为static静态内部类?

    给学生讲课的时候,发现存在这个问题,下来百度了下,发现很纠结,涉及到了内部类对外部类的引用,静态类的生命周期等java知识,现总结如下: static class ViewHolder { //定义l ...

  2. PHP商品秒杀计时实现(解决大流量方案)

    PHP商品秒杀功能我们多半以整点或时间点为例子,这样对于php来说处理不复杂,但有一个问题就是如果流量大要如何来处理,下面我们一起来看看解决办法. 要求要有小时分钟秒的实时倒计时的显示,用户端修改日期 ...

  3. 单链表带头结点&不带头结点

    转自:http://blog.csdn.net/xlf13872135090/article/details/8857632 Node *head;  //声明头结点   带头结点初始化 void I ...

  4. VS2013缺少报表工具

    问题1:缺少报表设计工具--即rdlc无法打开设计器 原因:缺少SQL Server Data Tools(SSDT)工具 解决:安装ssdt即可 SSDT下载地址:https://msdn.micr ...

  5. CF731C Socks并查集(森林),连边,贪心,森林遍历方式,动态开点释放内存

    http://codeforces.com/problemset/problem/731/C 这个题的题意是..小明的妈妈给小明留下了n只袜子,给你一个大小为n的颜色序列c 代表第i只袜子的颜色,小明 ...

  6. ado.net增删改查操作

    ado.net是数据库访问技术将数据库中的数据,提取到内存中,展示给用户看还可以将内存中的数据写入数据库中去 并不是唯一的数据库访问技术,但是它是最底层最基础的数据库访问技术 使用ado.net对数据 ...

  7. sqoop中,如果数据中本身有换行符,会导致数据错位

    sqoop中,如果数据中本身有换行符,会导致数据错位: 解决办法: 在sqoop import时修改配置文件 sudo -u hive sqoop import --connect jdbc:mysq ...

  8. SpringMyBatis解析2-SqlSessionFactoryBean

    通过分析整合示例中的配置文件,我们可以知道配置的bean其实是成树状结构的,而在树的最顶层是类型为org.mybatis.spring.SqlSessionFactoryBean的bean,它将其他相 ...

  9. SpringRMI解析2-RmiServiceExporter逻辑脉络

    配置文件是Spring的核心,在配置文件中我们可以看到,定义了两个bean,其中一个是对接口实现类的发布,而另一个则是对RMI服务的发布,使用org.springframework.remoting. ...

  10. AngularJs基础(一)

    使用 angularjs首先在页面的<html>里添加一个模块写法: <html lang="en"ng-app="myApp"> my ...