Jodd-vtor验证框架

VTor是一个编程式验证框架,适用于任意java对象的验证。它是一个快速、微型的、专注于验证的框架。也可以通过注解或者手动设置验证条件。验证条件也可以在profile中分组。VTor是可扩展的,用户很容易使用自定义的验证条件。默认情况下,验证条件以java编写,但也很容易扩展它,使用xml或者其它编程语言来定义验证表达式。

Validation in action

VTor的验证过程包括:

  定义校验检查(如应用的验证条件)。

  在目标对象(通常指java bean对象)执行这些规则。

  检查验证结果。

示例:

    ValidationContext vctx = new ValidationContext();
    vctx.add(new Check("boo", new MinLengthConstraint(2)));

上面的代码片段在VTOR验证上下文中定义了一个简单check,这个check定义了boo属性的最小长度。

现在,验证一些bean试试:

    Vtor vtor = new Vtor();
    vtor.validate(vctx, fooBeanInstance);

验证已经执行。唯一要做的事情是检查验证结果:

List<Violation> vlist = vtor.getViolations();

当验证成功后,返回list是null。反正list包含了一组验证失败的冲突。非常简单,是吧?

Default constraints

VTor包含了很多通用的验证条件,如:

MaxConstraint,MinConstraint,RangeConstraint--定义了最大、最小范围的数字值。

LengthConstraint,HasSubstringConstraint,LengthConstraint,WildcardMatchConstraint....---检查string的值。

EqualToFieldConstraint --检查两个field是否相等。

..............

想要查看完整的验证条件请查看VTor的javadoc。

VTor annotations

当需要多行验证时,VTor支持使用注解来简化使用。下面使用注解来重写上面的示例:

    public class Foo {

        @MinLength(2)
        String boo;        // getters/setters are optional
    }

现在验证可以使用很少几行来完成:

    Vtor vtor = new Vtor();
    vtor.validate(fooInstance);
    System.out.println(vtor.hasViolations());

就是如此简单。

Profiles

  当一个bean不能使用不同set的验证条件例如rule组进行验证时,使用注解的问题就爆发了。

例如:例如一个用户模型对象,在创建和更新用户时的验证不同:创建时需要检查username是否唯一。这个时候就用到VTor的profile。

  Profile是一组验证条件的组合名称。VTor注解也可以指明Profile组别.

    @MinLength(value = 2, profiles = {"p1,p2"})
    String boo;

编程形式如下:

    Vtor vtor = new Vtor();
    vtor.useProfiles("p1", "p2");
    vtor.validate(fooInstance);

特殊的profile名称:

  *(通配符,代表所有的)--用在注释中,意思是一些验证条件属于所有的profile。因此为了不用写出所有的profile名称,可以使用这个通配符来替代。

  default --作用在默认组的校验check,例如没有显式定义profile名称的注解。

Excluding profiles

  有时,需要从一个或者多个profile中排除一个check(由注解验证条件定义的)。不用写下除了要排除掉的所有的profile名称,使用一个减号(‘-‘)作为前缀来排除一个profile,如(-p2).

  注意:排除profile名具有更高的优先级。

因而,即便一些check属于一个严重级别的profile,若存在一个排除profile,check将不会执行。

Must-have profiles

  若存在至少一个匹配的profile,check将会执行。有时,我们需要在所有的profile都有的check才执行,为达成这个目的,只要将加好("+")置于profile名称前面即可。

Severity

  级别时一个简单的检验权值,低于该指定级别的所有check将不会执行。

Profiles summary

    // match profiles ‘p1‘ OR ‘p2‘
    @FooCheck(profiles = {"p1", "p2"})

    // match profiles ‘default‘ OR ‘p2‘
    @FooCheck(profiles = {"default", "p2"})

    // match ‘p1‘ OR ‘p3‘ ONLY IF ‘p2‘ does NOT match
    @FooCheck(profiles = {"p1", "-p2", "p3"})

    // match profiles ‘p1‘ AND ‘p2‘
    @FooCheck(profiles = {"+p1", "+p2"})

Misc

增加自定义的violation。

  VTor允许用户增加自定义的violation,而不仅仅是检验条件。例如:

vtor.addViolation(new Violation("number", foo, null));

这种形式下,甚至是验证本身都可以在VTor之外执行,然后传递结果到框架中。

Use constraints directly

  绝大部分的VTor验证条件可以直接执行,使用验证类的静态方法validate().示例如下:

boolean valid = MinLengthConstraint.validate("value", 3);

结束!yeah!

时间: 2024-10-09 23:13:56

Jodd-vtor验证框架的相关文章

ASP.NET MVC验证框架中关于属性标记的通用扩展方法

http://www.cnblogs.com/wlb/archive/2009/12/01/1614209.html 之前写过一篇文章<ASP.NET MVC中的验证>,唯一的遗憾就是在使用Data Annotation Validators方式验证的时候,如果数据库是Entityframework等自动生成的文件,就没有办法使用扩展属性标记进行标记.现在已经开始有了一些其它的Asp.net MVC 验证框架,使用上跟Data Annotation Validators差不太多,但是普遍有这样

【狂人小白】轻量级验证框架 Validation.FO 的入门与使用

Validation.FO 使用指南 框架说明 这是一个验证框架,并且是一个 独立的验证框架 ,不依赖与其他已有的框架: 可以自由的嵌入到其他框架,比如Spring.Struts等流行框架,但实质来说他是独立的,所以无所谓嵌入到哪里,如果需要在GUI桌面应用中,也是完美的: 配置简单,可自由扩展验证器,实际只要实现IValidator接口,以及在rules.fo.xml中添加相关的配置即可: 支持Spring接口 使用过程中,你会感觉好像只用了 IValidateService.validate

struts2验证框架

Struts的验证框架 一.字段验证器1.简单的用户输入验证,在接收数据的Action同一个包下,创建一个***-validation.xml文件,然后对验证规则进行配置示例: <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> <val

Struts2 验证框架 validation.xml 常用的验证规则

Struts2 验证框架 validation.xml 常用的验证规则 validation.xml 的命名规则和放置路径:文件名:<ActionClassName>-validation.xml<ActionClassName>就是要验证的Action类的名字. 要将此文件放于Class文件相同的目录.如果在Action类在struts配置中有多个action实例(action name),那么对应某个action的验证文件名规则如下:文件名:<ActionClassNam

WisDom.Net 框架设计(七) 验证框架

WisDom.Net-验证框架 1.分类 这里我们将数据验证分为以下几种 数据类型校验      主要用于确保数据类型输入的正确  比如年龄一项输入 A岁 ,显然不合法 域检查               主要用于验证输入的数据的是否在取值范围  比如在年龄一项 输入 400 ,显然这里不合法 格式检查            主要用于检查数据格式是否正确, 比如Email 输入Ca 显然这里也是不合法 自定义检查,       自定义校验数据. 比如 校验数据格式是否合法等 2.简介      

struts2学习笔记(三)—— 在用户注冊程序中使用验证框架

实现目标: 1.使用验证框架对用户注冊信息进行验证 2.验证username.password.邮箱不能为空 3.验证username.password长度 4.验证邮件地址格式 详细实现 一.Struts2应用的基础配置 这里不做具体阐述,具体为web.xml.相关jar包的配置 二.将页面显示的文本内容放到资源文件里 1.查看用户注冊程序中的全部页面,找到全部能够显示的文本内容,将它们分离出来放到资源文件里. 2.与相关的Action类同名,以.preperties为扩展名,与Action类

jQuery Validate验证框架详解

jQuery校验官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一.导入js库 <script type="text/javascript" src="<%=path %>/validate/jquery-1.6.2.min.js"></script> <script type="text/javascript" src

构思一套自己的验证框架

最近打算乘着快过年的前一小段时间做一套自己的验证框架,然后在先将具体的思路写一下:(共两套版本 纯js与基于jq1.7版本的 ) 总体约定: a.所有的验证函数 val_xxx的形式命名: b.输入常数顺序  依次为 'val_c_xxx', ret_className  分别表示获取方式对应的class名,以及验证后返回的信息传递到的具体位置: 其中 第二个输入项为固定选项值 val_c_uername  val_c_password val_c_regpassword val_c_phone

前台验证框架jQuery-Validation-Engine

github地址:https://github.com/posabsolute/jQuery-Validation-Engine 一个中文文档地址:http://code.ciaoca.com/jquery/validation_engine/ 普通的验证就不在说了,参考文档以及很明了了. 这里写一个field的ajax验证吧. demo 实现功能是一个简单的唯一性的验证,通过jQuery-Validation-Engine的Ajax提交后台进行验证后返回信息. 首先,给input class