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. GZIP压缩、解压缩工具类

    GZIP压缩.解压缩工具类: public class GZIPUtiles { public static String compress(String str) throws IOExceptio ...

  2. JVM调优实战

      JVM调优实战 文档修订记录 版本 日期 撰写人 审核人 批准人 变更摘要 & 修订位置                                                   ...

  3. eclipse中link方式安装插件

    今天需要给eclipse安装svn插件,觉得link方式便于管理于是就打算用这种方式来安装. 我电脑上的eclipse的安装目录是   E:\tools\eclipse   下面开始安装 1.在ecl ...

  4. eclipse 安卓运行一直跳转到调试模式

    最直接的办法,换手机试试,如果在其他手机上能run,那就重启手机即可 感觉写这么一点点似乎不足以发表一篇博客,给个链接吧:http://www.itnose.net/detail/6103213.ht ...

  5. 工具类 util.Date 日期类

    /** * @description format the time * @author xf.radish * @param {String} format The format your want ...

  6. MVC 5 属性路由中添加自己的自定义约束

    介绍约束 ASP.NET MVC和web api 同时支持简单和自定义约束,简单的约束看起来像: routes.MapRoute("blog", "{year}/{mon ...

  7. textview设置不同字体大小

    <style name="style0"> <item name="android:textSize">19dip</item&g ...

  8. angular中的等号(==)判定

    使用angularjs的时候会使用到其中的表达式,其中有相等的判断.由于js有==和===的区别,于是就想看看是否相同.自己稍微做了一点测试,一看便知. 先给结论:angularjs表达式中的==和= ...

  9. 在java中json的使用案例

    import java.text.ParseException; import org.json.JSONArray; import org.json.JSONObject; public class ...

  10. Android KeyCode

    KEYCODE_UNKNOWN=0; KEYCODE_SOFT_LEFT=1; KEYCODE_SOFT_RIGHT=2; KEYCODE_HOME=3; KEYCODE_BACK=4; KEYCOD ...