`

JSR-303

阅读更多
JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,官方参考实现是Hibernate Validator。
此实现与Hibernate ORM 没有任何关系。JSR 303 用于对Java Bean 中的字段的值进行验证。

Spring MVC 3.x之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证。

JSR 303内置的约束规则:

@AssertTrue / @AssertFalse
  • 验证适用字段:boolean
  • 注解说明:验证值是否为true / false
  • 属性说明:-

@DecimalMax / @DecimalMin
  • 验证适用字段:BigDecimal,BigInteger,String,byte,short,int,long
  • 注解说明:验证值是否小于或者等于指定的小数值,要注意小数存在精度问题
  • 属性说明:公共

@Digits
  • 验证适用字段:BigDecimal,BigInteger,String,byte,short,int,long
  • 注解说明:验证值的数字构成是否合法
  • 属性说明:integer:指定整数部分的数字的位数。fraction: 指定小数部分的数字的位数。

@Future / @Past
  • 验证适用字段:Date,Calendar
  • 注解说明:验证值是否在当前时间之后 / 之前
  • 属性说明:公共

@Max / @Min
  • 验证适用字段:BigDecimal,BigInteger,String,byte,short,int,long
  • 注解说明:验证值是否小于或者等于指定的整数值
  • 属性说明:公共

@NotNull / @Null
  • 验证适用字段:引用数据类型
  • 注解说明:验证值是否为非空 / 空
  • 属性说明:公共

@Pattern
  • 验证适用字段:String
  • 注解说明:验证值是否配备正则表达式
  • 属性说明:regexp:正则表达式flags: 指定Pattern.Flag 的数组,表示正则表达式的相关选项。

@Size
  • 验证适用字段:String,Collection,Map,数组
  • 注解说明:验证值是否满足长度要求
  • 属性说明:max:指定最大长度,min:指定最小长度。

@Valid
  • 验证适用字段:引用类型
  • 注解说明:验证值是否需要递归验证
  • 属性说明:无


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

刚开始学着用JSR-303做验证就出现麻烦了。 昨天晚上调试了好久。

使用Spring MVC 和 JSR-303的标注做表单提交的服务器端验证时,
@Valid 标注的Command对象和BindingResult参数一定要紧挨着。要不然
数据绑定错误直接抛异常,不会封装成一个BindingResult对象。
	@RequestMapping(value="/login", method=RequestMethod.POST)
	public String login(@Valid User user, BindingResult br, Map<String, Object> model) {
		if (br.hasErrors()) {
			return "login";
		}
		return "redirect:/salary/list.do";
	}
分享到:
评论
6 楼 yingzhor 2012-10-12  
对不起,好久没有上过iteye了。 我没有用过不使用SpringMvc标签的情况。

但是,我觉得不是什么难事,建议用调试用具调试一下,HttpServletRequest 的实例。

错误信息是作为Attribute保存的。
5 楼 xisuchi 2012-10-12  
lifei2199 写道
,请问一下,spring MVC使用jsr303,将错误的提示信息返回到页面上必须使用spring的sf标签吗,能不能使用c标签?尝试无果

同问。
4 楼 lifei2199 2012-10-08  
,请问一下,spring MVC使用jsr303,将错误的提示信息返回到页面上必须使用spring的sf标签吗,能不能使用c标签?尝试无果
3 楼 baowp 2011-04-08  
可是我的确是挨在一起的,
@RequestMapping(value = "/{id}")
public String helloWorld(@PathVariable String id,
@ModelAttribute("fruit") @Valid InventoryItem fruit,
BindingResult result, HttpServletRequest request,
HttpServletResponse response, Map<String, Object> map)
2 楼 yingzhor 2011-04-07  
baowp 写道
我也是这样写的,可是bindingResult始终都没有error
org.springframework.validation.BeanPropertyBindingResult: 0 errors

请注意一下,你的要验证的对象,和BindingResult 参数是放在一起的吗?

它们必须紧挨在一起。我也吃过这个苦头,调试了好半天。
1 楼 baowp 2011-04-07  
我也是这样写的,可是bindingResult始终都没有error
org.springframework.validation.BeanPropertyBindingResult: 0 errors

相关推荐

    JSR-303接口标准和参考实现

    JSR-303接口标准,全称为Java Specification Request 303,是Java平台上的一个规范,旨在提供一种统一的、与框架无关的bean验证框架。该标准由Java Community Process(JCP)提出,目的是简化Java应用中的数据验证...

    服务器验证JSR-303

    JSR-303的发布使得在数据自动绑定和验证变得简单,使开发人员在定义数据模型时不必考虑实现框架的限制。

    Spring jsr-303的帮助文档

    spring自己的验证框架,jsr-303的帮助文档

    SpringMVC使用JSR-303进行验证Bean.docx

    一、准备校验时使用的JARvalidation-api-1.1.0.Final.jar:JDK的接口;hibernate-validator-5.2.4.Final.jar是对上述接口的实现;或者在Maven中添加依赖:1.&lt;dependency&gt; 2. &lt;groupId&gt;org.hibernate&lt;/groupId&gt; 3....

    JSR303依赖的jar包

    validator-5.2.4.Final.jar、hibernate-validator-annotation-processor-5.2.4.Final.jar、hibernate-validator-cdi-5.2.4.Final.jar、validation-api-1.1.0.Final.jar四个jar包,用于JSR303的校验。

    springmvc表单验证JSR-303验证框架jar包

    hibernate-validator-5.2.4.Final.jar hibernate-validator-annotation-processor-5.2.4.Final.jar hibernate-validator-cdi-5.2.4.Final.jar validation-api-1.1.0.Final.jar jboss-logging-3.2.1.Final.jar ...

    springmvc使用JSR-303进行数据校验实例

    本篇文章主要介绍了详解springmvc使用JSR-303进行数据校验,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

    SpringMVC 使用JSR-303进行校验 @Valid示例

    本篇文章主要介绍了SpringMVC 使用JSR-303进行校验 @Valid示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    jetty-maven-cdi-demo:有关如何一起设置和使用resteasy,swagger,weld,jsr-303和jetty的演示应用程序

    Resteasy资源中的JSR-303验证 Swagger JAX-RS扫描 Swagger在端点上提供其余文档 轻松灵活地处理JAX-RS子资源 要运行该应用程序,只需键入 $ mvn jetty:run 启动应用程序后,您可以在或。 这里最困难的部分是说服大...

    验证器:验证器组件提供了一些工具,可以根据JSR-303 Bean验证规范来验证值

    JSR-303(Java Specification Request 303)是Java世界中用于对象验证的标准,它的目标是提供一种标准的方式来定义和执行数据验证。尽管是Java规范,但Symfony的验证器组件很好地实现了这一规范,使得PHP开发者也能...

    hibernamte_validator_4.3_final.zip

    《深入理解Hibernate-validator及其在JSR-303中的应用》 Hibernate-validator是Java世界中一个强大的验证框架,它在JSR-303规范的基础上提供了丰富的注解和灵活的验证逻辑,使得开发者能够轻松地对输入数据进行验证...

    hibernate-validator-5.1.0.zip

    SpringMVC框架结合JSR-303标准,利用Hibernate Validator实现了强大的验证功能。本文将详细探讨`hibernate-validator-5.1.0.zip`这个包在SpringMVC中的应用,以及其在数据校验中的关键知识点。 一、Hibernate ...

    jsr 303 jar包下载

    按照课件推荐下载,准确有效,包括(hibernate-validator-4.3.2.Final.jar;jboss-logging-3.1.0.CR2.jar;validation-api-1.1.0.Alpha1.jar和jsr303约束文档)

    23 Spring Core参数校验之JSR303_JSR-349注解-慕课专栏1

    Spring Core提供了一种优雅的方式来处理参数校验,特别是通过JSR 303、JSR 349和JSR 380这些标准注解,实现了高效且易于维护的验证机制。 JSR 303最初定义了JavaBean验证的标准,而JSR 349是其修订版,主要增加了对...

    hibernate_validator5.0 中文文档

    Hibernate Validator 5是Bean Validator(JSR-303)规范的标准实现,此版本包含了许多新特性: •约束组合:自定义的约束,可避免重复代码,提高可读性 •对组的约束:允许你自定义约束,你希望看到的特定子集 •类型...

    validation-api-1.1.0.Final.jar

    JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,现在一共有两个规范:BeanValidation1.0(即JSR303)和BeanValidation1.1(即JSR349),主要用于对数据进行校验,确保输入进来的数据从语 义上来讲是正确的。...

    佟刚_JSR303验证.

    JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是 Hibernate Validator。 此实现与 Hibernate ORM 没有任何关系。JSR 303 用于对 Java Bean 中的字段的值 进行验证。

    jsf2-jsp-portlet-3.1.3-ga4.zip

    1. 生成bean验证注释的jaxb插件(jsr-303):这个插件可以在生成的Java类中自动添加JSR-303的验证注解,如`@NotNull`, `@Size`, `@Pattern`等,使得在编译时就能检查对象的有效性,提高代码质量。 2. 用于生成bean...

    HibernateValidatorJSR303的参考实现使用指南.pdf

    JSR 303 的参考实现 使用指南 由 Hardy Ferentschik和Gunnar Morling and thanks to Shaozhuang Liu 4.3.1.Final 版权 © 2009 - 2011 Red Hat, Inc. & Gunnar Morling June 20, 2011 序言 1. 开始入门 1.1. 第一...

    bval-jsr303-0.4.jar

    jar包,亲测可用

Global site tag (gtag.js) - Google Analytics