JSR 303 - Bean Validation与Hibernate Validation 介绍

一、介绍

    在应用程序中,通过使用 Bean Validation 或是你自己定义的 constraint,例如 @NotNull@Max@ZipCode, 就可以确保数据模型(JavaBean)的正确性。constraint 可以附加到字段,getter 方法,类或者接口上面。对于一些特定的需求,用户可以很容易的开发定制化的 constraint。Bean Validation 是一个运行时的数据验证框架,在验证之后验证的错误信息会被马上返回。

    下载 JSR 303 – Bean Validation 规范  http://jcp.org/en/jsr/detail?id=303

    Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现,除此之外还有一些附加的 constraint。如果想了解更多有关 Hibernate Validator 的信息,请查看  http://www.hibernate.org/subprojects/validator.html

Bean Validation 中的 constraint

表 1. Bean Validation 中内置的 constraint

Constraint详细信息
@Null被注释的元素必须为 null
@NotNull被注释的元素必须不为 null
@AssertTrue被注释的元素必须为 true
@AssertFalse被注释的元素必须为 false
@Min(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@Max(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@DecimalMin(value)被注释的元素必须是一个数字,其值必须大于等于指定的最小值
@DecimalMax(value)被注释的元素必须是一个数字,其值必须小于等于指定的最大值
@Size(max, min)被注释的元素的大小必须在指定的范围内
@Digits (integer, fraction)被注释的元素必须是一个数字,其值必须在可接受的范围内
@Past被注释的元素必须是一个过去的日期
@Future被注释的元素必须是一个将来的日期
@Pattern(value)被注释的元素必须符合指定的正则表达式

表 2. Hibernate Validator 附加的 constraint

Constraint详细信息
@Email被注释的元素必须是电子邮箱地址
@Length被注释的字符串的大小必须在指定的范围内
@NotEmpty被注释的字符串的必须非空
@Range被注释的元素必须在合适的范围内

——摘自 http://www.ibm.com/developerworks/cn/java/j-lo-jsr303/

二、No validator错误及解决方法

    javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer

    使用hibernate validator出现上面的错误, 需要 注意

        @NotNull 和 @NotEmpty  和@NotBlank 区别

        @NotEmpty 用在集合类上面
        @NotBlank 用在String上面
        @NotNull    用在基本类型上

    当@NotEmpty用在Integer类型上时将会出现上面的错误,换成@NotNull问题解决。

    ——摘自 http://blog.csdn.net/dracotianlong/article/details/23181729

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[导入]韩语基本会话

韩语基本会话韩语原文 读法中文谐音中文翻译 네.(예.) Ne.(ye.)呢/也 是 아니오 Anio啊里哟 不是 여보세요 Yeoboseyo哟而波塞哟 喂 안녕하세요 Annyeong-haseyo安泥哈塞哟 你好 안녕히 계세요 Annyong-hi gyeseyo安泥黑给塞哟 再见 안녕히 가세요 Annyeong-hi gaseyo安泥黑卡…

AAAI2018正式落幕 13个世界顶尖AI教授都讲了啥?

来源:智东西概要:2月8日消息,第32届AAAI大会在美国新奥尔良正式闭幕。2月8日消息,第32届AAAI大会在美国新奥尔良正式闭幕。本次大会不仅颁发了最佳论文奖、最佳学生论文奖、经典论文将等一系列奖项。作为顶级学术会议之一&#xf…

C++学习之路 | PTA乙级—— 1016 部分A+B (15分)(精简)

1016 部分AB (15分) 正整数 A 的“D ​A ​​ (为 1 位整数)部分”定义为由 A 中所有 D ​A ​​ 组成的新整数 P ​A ​​ 。例如:给定 A3862767,D ​A ​​ 6,则 A 的“6 部分”P ​A ​​ 是 66,因为 A…

Linux 中 VIM 的使用

Vim 官网:http://www.vim.org/ VIM 实用技巧:https://wenku.baidu.com/view/21c5f387d4d8d15abe234ecb.html vim 的一些小技巧:https://www.douban.com/group/topic/1815089 vim 简单实用的技巧总结:http://www.tuicool.com/arti…

Pull Up Method(函数上移)

有些函数,在各个子类中产生完全相同的结果 重构:将该函数移至超类

使用帮助

帮助转载于:https://www.cnblogs.com/chrisdong/archive/2006/12/06/1642478.html

重磅 | 中国工程院提出新一代智能制造【附下载】

来源:走向智能论坛近日,中国工程院院刊《Engineering》推出最新观点性文章“走向新一代智能制造”,作者周济、李培根、周艳红等,文章指出智能制造是一个不断演进发展的大概念,可归纳为三个基本范式:数字化制…

C++学习之路 | PTA乙级—— 1017 A除以B (20分)(精简)

1017 A除以B (20分) 本题要求计算 A/B,其中 A 是不超过 1000 位的正整数,B 是 1 位正整数。你需要输出商数 Q 和余数 R,使得 ABQR 成立。 输入格式: 输入在一行中依次给出 A 和 B,中间以 1 空格分隔。 输出格式&…

Python 装饰器 函数

Python装饰器学习(九步入门):http://www.cnblogs.com/rhcad/archive/2011/12/21/2295507.html 浅谈Python装饰器:https://blog.csdn.net/mdl13412/article/details/22608283 Python装饰器与面向切面编程:http://www.cn…

轻松学DIV教程(div+css布局)

我爱棒棒糖! 你正在学习CSS布局吗?是不是还不能完全掌握纯CSS布局?通常有两种情况阻碍你的学习:第一种可能是你还没有理解CSS处理页面的原理。在你考虑你的页面整体表现效果前,你应当先考虑内容的语义和结构&#xff0…

Pull Up Constructor Body(构造函数本体上移)

各个子类中拥有一些构造函数,它们的本体几乎完全一致 public class Manager extends Employee {public Manager(String name, String id, int grade) {this.name name;this.id id;this.grade grade;} } 重构:在超类中新建一个构造函数,并…

Homepod评测:一款音质超棒但低智商的音箱

来源:The Verge今天,让我们再近距离看看Homepod这款明星产品吧。Homepod拥有卓越的音质HomePod的电源线内置并包裹在面料中,顶部有LED背光音量按钮和一个“显示屏”。之所以打引号是因为它不是真正意义上的显示屏,而是一块LED。它…

C++学习之路 | PTA乙级—— 1018 锤子剪刀布 (20分)(精简)

1018 锤子剪刀布 (20分) 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: FigCJB.jpg 现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。 输入格式&…

你是否依然会想我?

你是否依然会想我?——代腾飞 2006年11月30日 于成都曾经的风花雪月,曾经的浪漫情怀早也被那无情的岁月摧残得遍体鳞伤曾经的甜言蜜语,曾经的情意衷肠早也随那凌厉的寒风吹向九霄云外你那倾国倾城的绝世容颜与我盖世无双的聪明才智曾经演绎了名垂千古…

Python 生成器 和 yield 关键字

Python 中 yield 的作用:http://youchen.me/2017/02/10/Python-What-does-yield-do/# Python 生成器详解:http://codingpy.com/article/python-generator-notes-by-kissg/#generator Python yield与实现:http://www.cnblogs.com/coder2012/p/…

Extract Subclass(提炼子类)

类中的某些特性只被某些实例用到 重构:新建一个子类,将一部分特性搬移到子类中

从上市公司数据读懂我国新兴产业发展态势

来源:新软件 ccidsaism在全球新一轮科技革命和产业变革中,大数据、物联网、区块链、量子通信、人工智能、机器人、可穿戴设备、新材料等新兴领域展现出巨大的发展潜力,极有可能对未来产业格局和市场产生决定性影响。这些领域的上市公司已成为…

C++学习之路 | PTA乙级—— 1019 数字黑洞 (20分)(精简)

1019 数字黑洞 (20分) 给定任一个各位数字不完全相同的 4 位正整数,如果我们先把 4 个数字按非递增排序,再按非递减排序,然后用第 1 个数字减第 2 个数字,将得到一个新的数字。一直重复这样做,我们很快会停在有“数字…

JavaScript,等比例缩放图片的函数,很好用。

在Web上显示图片&#xff0c;通常都会有图片显示比例问题&#xff0c;如果不给<img />限制width和height&#xff0c;那么如果图片大了就会将整个页面挤乱&#xff0c;图片小了又会使图片失真。我的需求如下&#xff1a;1、预先定义好图片显示的标准宽度和高度。2、如果图…

深度学习综述:Hinton、Yann LeCun和Bengio经典重读

来源&#xff1a;人工智能头条翻译 | kevin&#xff0c;刘志远审校 | 李成华深度学习三巨头Geoffrey Hinton、Yann LeCun和Yoshua Bengio对AI领域的贡献无人不知、无人不晓。本文是《Nature》杂志为纪念人工智能60周年而专门推出的深度学习综述&#xff0c;也是Hinton、LeCun和…