<dependency> <groupId>cc.fozone.validation</groupId> <artifactId>fo-validation</artifactId> <version>0.9.1.RELEASE</version> </dependency>
源代码地址:Basic Usage
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 */ ... }
<?xml version="1.0" encoding="UTF-8"?> <fozone-validation> <!-- include 标签导入其他配置 --> <include file="validationinfo/basic/another-rules.fo.xml"/> <!-- 验证组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> </fozone-validation>
主要步骤:
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); } } }
12:31:41,084 INFO BasicValidateConfig:44 - read validation main file , validationfo/basic/rules.fo.xml 验证失败,结果如下 {email=邮件格式不正确, password=两次密码输入不正确, starttime=开始时间不能大于结束时间, endtime=结束时间不能小于开始时间}
Validation.FO 使用指南 框架说明 这是一个验证框架,并且是一个 独立的验证框架 ,不依赖与其他已有的框架; 可以自由的嵌入到其他框架,比如Spring、Struts等流行框架,但实质来说他是独立的,所以无所谓嵌入到哪里,如果需要在GUI桌面应用中,也是完美的; 配置简单,可自由扩展验证器,实际只要实现IValidator接口,以及在rules.fo.xml中添加相关的配置即可; 支持
Validation.FO 使用指南 框架说明 这是一个验证框架,并且是一个 独立的验证框架 ,不依赖与其他已有的框架; 可以自由的嵌入到其他框架,比如Spring、Struts等流行框架,但实质来说他是独立的,所以无所谓嵌入到哪里,如果需要在GUI桌面应用中,也是完美的; 配置简单,可自由扩展验证器,实际只要实现IValidator接口,以及在rules.fo.xml中添加相关的配置即可; 支持
下载地址 参考:https://github.com/41zone/validation/ 下载DEMO:http://down.51cto.com/data/1028885 窥探用法 在使用其实你会发现,好像整个框架好像只有一个方法`IValidateService.validate(this,"group.xxx");` 优点 不与任何对象做绑定,最大限度解耦,并不像Struts那样与对象绑定
使用hibernate validator出现上面的错误, 需要 注意 @NotNull 和 @NotEmpty 和@NotBlank 区别 @NotEmpty 用在集合类上面 @NotBlank 用在String上面 @NotNull 用在基本类型上 如果在基本类型上面用NotEmpty或者NotBlank 会出现上面的错 http://blog.csdn.net/dracotian
使用hibernate validator出现上面的错误, 需要 注意 @NotNull 和 @NotEmpty 和@NotBlank 区别 @NotEmpty 用在集合类上面 @NotBlank 用在String上面 @NotNull 用在基本类型上 在枚举类上不要加非空注解
问题描述 今天完成分类模块接口,测试抛出如下错误: javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'org.hibernate.validator.constraints.NotBlank' validating type 'java.lang.Integ
1、问题 未知系统(null)请求 /phone/deletePhoneList 出错 javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java
django.core.exceptions.ValidationError: ["'' value has an invalid date format. It must be in YYYY-MM-DD format."] 说明下,报这个错的原因是django使用DateField()或者DateTimeField()时设置了default='',有时系统会自动填充'',由于是空字符串不符合时
“HV000030: No validator could be found for constraint ‘javax.validation.constraints.NotBlank’ validating type ‘java.math.BigDecimal’. Check configuration for ‘price’” @NotEmpty 用在集合类上面 @NotBlank 用在Str
使用hibernate validator出现上面的错误, 需要 注意 @NotNull 和 @NotEmpty 和@NotBlank 区别 @NotEmpty 用在集合类上面 @NotBlank 用在String上面 @NotNull 用在基本类型上 如果在基本类型上面用NotEmpty或者NotBlank 会出现上面的错 http://blog.csdn.net/dracotian
问题内容: 是否有一个提供发布/订阅模式的Java轻量级框架? 一些理想的功能 支持泛型 向发布者注册多个订阅者 API主要是接口和一些有用的实现 完全不需要内存,持久性和事务保证。 我了解JMS,但这对我来说太过分了。发布/订阅的数据是文件系统扫描的结果,扫描结果被馈送到另一个组件进行处理,然后在将其馈给另一个组件之前进行处理,依此类推。 编辑:所有在同一过程中。bean的PropertyCha
Jenkins Pipeline插件有一个称为“轻量级签出”的功能,其中主服务器仅从repo中提取Jenkinsfile,而不是整个repo。配置屏幕中有一个相应的复选框。我想在多分支管道中进行轻量级签出,但我在多分支配置屏幕中没有看到复选框。有什么想法如何实现这一点吗?我注意到一些关闭的问题表明此功能可用,但我无法找到任何有关如何实现它的细节。 相关资料: https://issues.jenk
问题内容: 我曾经遇到过Java的验证框架,您在其中编写了一种方法来保护数据类型的完整性以及对该数据类型的任何CRUD操作的自动调用此方法。 有谁知道这个框架是什么?我只是想避免对附加到数据类型的每个CRUD方法进行重复验证。 问题答案: 这是Java验证库/框架的巨大列表-http: //java-source.net/open- source/validation
本文向大家介绍轻量级javascript 框架Backbone使用指南,包括了轻量级javascript 框架Backbone使用指南的使用技巧和注意事项,需要的朋友参考一下 Backbone 是一款基于模型-视图-控制器 MVC 模式的轻量级javascript 框架 ,可以用来帮助开发人员创建单页Web应用。 借助Backbone 我们可以使用REST的方式来最小化客户端和服务器间的数据传输,
本文向大家介绍前端轻量级MVC框架CanJS详解,包括了前端轻量级MVC框架CanJS详解的使用技巧和注意事项,需要的朋友参考一下 选择正确的库 创建一个JS APP没有好的工具是很有难度的,jQuery只是操作DOM的库,没有提供任何创建APP的基础,这就是为什么我们要一个类似CanJS的专门的库。 CanJS 是一个轻量级的MVC库,提供你创建一个JS APP所需的工具。 CanJS 是一个轻
问题内容: 题 我正在寻找Java内存对象缓存API。有什么建议吗?您过去使用过什么解决方案? 当前 现在,我只是在使用地图: 要求 我需要扩展缓存以包括以下基本功能: 最大尺寸 生存时间 但是,我不需要更复杂的功能,例如: 来自多个进程的访问(缓存服务器) 持久性(到磁盘) 意见建议 内存中缓存: Guava CacheBuilder-活动开发。请参阅此演示文稿。 LRUMap-通过API配置。