Validation.FO - 轻量级Java验证框架


MIT
跨平台
Java

软件简介

Validation.FO 使用指南

框架说明

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

优点

  1. 不与任何对象做绑定,最大限度解耦
  2. 只要规则配置写的合理,规则可以复用到多个对象
  3. 扩展验证器很简单
  4. 以Map存储验证结果,非常简单的导出JSON,只要你愿意

相关文档

如何下载

快速开始

使用Validation.FO的步骤如下:

  1. 配置验证规则rules.fo.xml
  2. 实例化IValidateService对象
  3. 调用IValidateService.validate方法

基本的使用方法

源代码地址:Basic Usage

1. 创建POJO对象User.java

package validationfo.basic;

import java.sql.Timestamp;

/**
 * 用户对象
 * @author Jimmy Song
 *
 */
public class User {
    // 用户名
    private String username;

    // 密码
    private String password;
    // 再次输入密码
    private String passwordOne;

    // 邮箱
    private String email;

    // 开始与结束时间
    private Timestamp starttime;
    private Timestamp endtime;

    /**
    * Setter & Getter
    */
    ... 
}

2. 配置验证规则rules.fo.xml


  • 导入其他规则文件


  • 验证分组,name应该为全局唯一的


  • 验证的字段,name是被验证对象的属性字段名


  • 验证规则,name是验证器名称,message是错误后返回的消息


  • 是验证规则时可能需要传入的参数,name是参数名,value是参数值

    <?xml version=”1.0” encoding=”UTF-8”?>


    <!-- 验证组ID,全局唯一 -->
    <group name="user.validate">
        <!-- 验证字段 -->
        <field name="email">
            <!-- 
                规则列表
            -->
            <rule name="required" message="邮件必须填写"/>
        <rule name="between" message="邮件长度应该3-100之间">
            <param name="min" value="3"/>
            <param name="max" value="100"/>
        </rule>
            <rule name="match" message="邮件格式不正确">
                <param name="regex" value="^[A-Za-z]+[\.\-_A-Za-z0-9]*@[A-Za-z0-9]+[\.\-_A-Za-z0-9]*$"/>
            </rule>
        </field>
    
        ...
    
    </group>
    

3. 实例化测试BasicTest.java

主要步骤:

  1. 创建配置读取对象IValidateConfig
  2. 创建验证服务对象IValidateService
  3. 执行验证方法IValidateService.validate(object, groupId)

    package validationfo.basic;

    /
    * 最基本的测试
    * @author Jimmy Song
    * */
    public class BasicTest {
    public static void main(String[] args) {
    /

    * Validation.FO的配置资源
    */
    // 验证器配置,系统默认配置
    String validatorsXML = “validationfo/basic/validators.fo.xml”;
    // 规则配置
    String rulesXML = “validationfo/basic/rules.fo.xml”;

        /**
         * 实例化配置对象
         */
        IValidateConfig config =new BasicValidateConfig(validatorsXML, rulesXML);
        /**
         * 实例化验证服务层
         */
        IValidateService validateService = new BasicValidateService(config);
    
        // 实例化用户
        User user = createUser();
    
        /**
         * 执行验证
         */
        Map<String,String> map = validateService.validate(user, "user.validate");
        // 输出结果
        if(map == null || map.size() == 0) {
            System.out.println("验证成功");
        } else {
            System.out.println("验证失败,结果如下");
            System.out.println(map);
        }
    }
    

    }

4. 结果输出

12:31:41,084  INFO BasicValidateConfig:44 - read validation main file , validationfo/basic/rules.fo.xml
验证失败,结果如下
{email=邮件格式不正确, password=两次密码输入不正确, starttime=开始时间不能大于结束时间, endtime=结束时间不能小于开始时间}

更多内容请点击:http://my.oschina.net/41zone/blog/324657

目录列表: