1.添加Hiberbate validator相关的jar包

2.字需要验证的formbean 上添加验证的注解,内置注解有:

    1. dBean Validation 中内置的 constraint
    2. @Null   被注释的元素必须为 null
    3. @NotNull    被注释的元素必须不为 null
    4. @AssertTrue     被注释的元素必须为 true
    5. @AssertFalse    被注释的元素必须为 false
    6. @Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    7. @Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    8. @DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    9. @DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    10. @Size(max=, min=)   被注释的元素的大小必须在指定的范围内
    11. @Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内
    12. @Past   被注释的元素必须是一个过去的日期
    13. @Future     被注释的元素必须是一个将来的日期
    14. @Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式
    15. Hibernate Validator 附加的 constraint
    16. @NotBlank(message =)   验证字符串非null,且长度必须大于0
    17. @Email  被注释的元素必须是电子邮箱地址
    18. @Length(min=,max=)  被注释的字符串的大小必须在指定的范围内
    19. @NotEmpty   被注释的字符串的必须非空
    20. @Range(min=,max=,message=)  被注释的元素必须在合适的范围内

可以自己扩展。

用法例子:我们接受表单的验证bean为ProductUnityFormatModel

public class ProductUnityFormatModel {
private String productId;//产品ID private String categoryId; //产品分类ID private List<String> categoryName;//产品名字 private String shopCategoryId;//店铺分类ID @Size(min = 1,max = 50,message = "<标题长度1-50字以内>")
private String productName;//产品名称 private String productCode;//产品编号 @NotNull(message = "<至少上传一张照片>")
private String[] productImgs; @NotEmpty(message = "<发货地不为空>")
private String addrProvinceName;//所在省份 @NotEmpty(message = "<发货地省市不为空>")
private String addrProvinceCode;//所在省份code private String addrCityName;//所在市 @NotEmpty(message = "<发货地市区不为空>")
private String addrCityCode;//所在市code @Pattern(regexp = "[0-9]+",message = "<库存数量为纯数字>")
private String inventoryNum;//库存数量 @Pattern(regexp = "[0-9]+[.]?[0-9]*?",message = "<商品原价为纯数字或小数>")
private String marketPrice;//市场价 @Pattern(regexp = "[0-9]+[.]?[0-9]*?",message = "<微店价为纯数字或小数>")
private String salePrice;//销售价 @NotEmpty(message = "<商品的详情不为空>")
private String productDescription;//商品描述 @Pattern(regexp = "[0-9]+[.]?[0-9]*?",message = "<运费为纯数字或小数>")
private String freight;//运费   //省略get和set方法
}

在controller中的请求方法的接受对象添加@Valid注解:(BindingResult必须紧跟着@ModelAttribute注解后面,一个不小心就就够你调试到头破还不知道为什么)

@RequestMapping(value = "/product/savingProductInformation",method = RequestMethod.POST)
public String savingProductInformation(Model model,@Valid @ModelAttribute("unityFormatModel") ProductUnityFormatModel unityFormatModel, BindingResult result){
if(result.hasErrors()){
  //如果验证不通过,result.hasErrors()为true
  //todo somthing --可以带些填了的数据回去,方便回显,提供友好点的体验
  return "";//返回到字段验证失败的请求页面
}}

在jsp页面(用其他的渲染模板,自己查下怎么用)

可以用Spring的标签<form:errors path="填验证的formbean字段"/>如果该字段不通过验证,这个标签会显示你在验证注解中填写的message内容

SpringMVC利用Hibernate validator做字段验证的更多相关文章

  1. springMvc 支持hibernate validator

    SpringMVC 支持Hibernate Validator 发表于9个月前(2014-08-04 11:34)   阅读(1780) | 评论(0) 11人收藏此文章, 我要收藏 赞0 5月23日 ...

  2. SpringMVC之使用Validator接口进行验证

    对于任何一个应用而言在客户端做的数据有效性验证都不是安全有效的,这时候就要求我们在开发的时候在服务端也对数据的有效性进行验证.SpringMVC自身对数据在服务端的校验有一个比较好的支持,它能将我们提 ...

  3. SpringBoot整合Hibernate Validator实现参数验证功能

    在前后端分离的开发模式中,后端对前端传入的参数的校验成了必不可少的一个环节.但是在多参数的情况下,在controller层加上参数验证,会显得特别臃肿,并且会有许多的重复代码.这里可以引用Hibern ...

  4. WCF消息拦截,利用消息拦截做身份验证服务

    本文参考  http://blog.csdn.net/tcjiaan/article/details/8274493  博客而写 添加对信息处理的类 /// <summary> /// 消 ...

  5. Hibernate Validator异常HV000221解决办法

    自建博客地址:https://www.bytelife.net,欢迎访问! 本文为博客同步发表文章,为了更好的阅读体验,建议您移步至我的博客 本文作者: Jeffrey 本文链接: https://w ...

  6. spring boot:使用validator做接口的参数、表单、类中多字段的参数验证(spring boot 2.3.1)

    一,为什么要做参数验证? 永远不要相信我们在后端接收到的数据, 1,防止别人通过接口乱刷服务:有些不怀好意的人或机构会乱刷我们的服务,例如:短信接口, 相信大家可能很多人在工作中遇到过这种情况 2,防 ...

  7. hibernate Validator 6.X 的学习,bean的约束(字段,get方法上的验证)

    一:背景说明 验证数据是一个常见的任务,它贯穿于所有应用层,从呈现到持久层.通常在每个层中都执行相同的验证逻辑,耗时且容易出错.为了避免这些验证的重复,开发商往往把验证逻辑直接进入的领域模型,在领域类 ...

  8. Hibernate validator验证

    spring-mvc配置 <mvc:annotation-driven validator="validator" /> <bean id="valid ...

  9. 使用Hibernate Validator来帮你做数据校验

    数据校验是贯穿所有应用程序层(从表示层到持久层)的常见任务.通常在每个层中实现相同的验证逻辑,这是耗时且容易出错的.这里我们可以使用Hibernate Validator来帮助我处理这项任务.对此,H ...

随机推荐

  1. Elasticsearch 5.0 _all field的简单认识

    前言:本文的目的是为后续磁盘空间利用优化做铺垫,主要知识点来源于官网 一._all 是什么 在Elasticsearch中,_all field维护这一个很大的字符串数组(text类型).这个字符串是 ...

  2. HDU 5884 Sort

    二分,验证. 二分$k$,然后进行验证.有一个地方需要注意一下:如果$n$个数,每次合并$k$个,最后一次不能合$k$个,那么一开始需要补$0$之后再合并才是最优的.合并的时候用优先队列合并时间复杂度 ...

  3. python流程控制:while循环

    python编程中whihe语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务. while循环语句格式: while <判断条件>: 执行语句 count ...

  4. linux/windows平台生成随机数的不同方法

    linux平台,使用rand.Seed() //rand_linux.go package main import ( "math/rand" "time" ) ...

  5. awk学习笔记二:调用shell、文件执行(转)

    awk 'BEGIN {print "Hello"}' 不操作文件直接处理数据流 要调用shell则可以用管道命令 如,打印日期awk 'BEGIN {"date&quo ...

  6. Memcache(1)

    一.缓存套路 原文地址:http://coolshell.cn/articles/17416.html Scaling Memcached at Facebook 好些人在写更新缓存数据代码时,先删除 ...

  7. abap 一些小知识点的总结

    创建包含结构或表的内表: DATA: BEGIN OF it_tab.     INCLUDE TYPE/STRUCTURE name.       name:结构名或者表名 DATA: num TY ...

  8. JAVA内容回顾(一)——基本语法

    一.基本数据类型 1.标识符. 标识符由字母.数字.下划线和美元符组成. 标识符不能是JAVA的关键字与保留字,但是可以包含其内. 标识符区分大小写.标识符长度没有限制.标识符不能含有空格. 2.注释 ...

  9. 显示ubuntu 10.4右上角网络图标

    在面板右击“添加到面板”,选择“通知区域”

  10. archive log

    1.查看归档模式 2.查看归档文件所在位置 3.完全恢复和不完全恢复 完全恢复:找到问题产生的时间点,在时间点之后的数据也能同时保留 不完全恢复:只能恢复到产生问题的那个时间点的数据状态. 4.非归档 ...