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. 11g Physical Standby配置

    一,准备   Database DB_UNIQUE_NAME Oracle Net Service Name Primary PROD PROD Physical standby PRODDG PRO ...

  2. 机器学习系列:python

    工欲善其事,必先利其器!        机器学习的理论需要有编程语言才能得以实现,我选择 python 作为编程语言,网络上有篇不错的教程:python 初级教程:入门详解. 转载自http://ww ...

  3. 如何调试SSIS包之跟踪变量赋值

    在SSIS开发工具SQL Server Data Tools中提供了调试功能,可以让我们方便的跟踪参数赋值或者数据流条数.本文主要介绍了如何使用SSDT的调试功能. Part A: Script ta ...

  4. git push 使用总结

    git push命令用于将本地分支的更新,推送到远程主机.它的格式与git pull命令相仿. $ git push <远程主机名> <本地分支名>:<远程分支名> ...

  5. 人人网的账号登录及api操作

    .renren.php <?php /** * PHP Library for renren.com * * @author */ class renrenPHP { function __co ...

  6. Android SDK Manager 中如果没有相应的镜像ARM XX Image

    Android SDK Manager 中如果没有相应的镜像ARM XX Image 处理做法是:先更新 相应版本Android SDK Tools 然后出现 ARM XX Image

  7. C# 指针操作图像 二值化处理

    /// <summary> /// 二值化图像 /// </summary> /// <param name="bmp"></param& ...

  8. nginx配置文件nginx.conf

    #定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_processes 8; #全局错误日志定义类型,[ debug | in ...

  9. BroadCast,BroadCastReceiver

    效果是:一个MainActivity动态注册一个BroadcastReceiver,BActivity发送一个标准广播,MainActivity接收到广播后,将广播中的消息显示在MainActivit ...

  10. 开发Portlet第二步:如何将Crystal静态Portlet转变成基于测试数据的动态Portlet?

    当基于Crystal的静态Portlet开发完成后,在与后台服务联调前,还需要将Portlet转换成基于测试数据的动态Portlet.具体步骤如下: 分步指南 复制Portlet项目,并修改相关的po ...