zoukankan      html  css  js  c++  java
  • SpringMVC利用Hibernate validator做字段验证

    1.添加Hiberbate validator相关的jar包

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

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

  • 相关阅读:
    splay复杂度的证明
    splay的写法
    洛谷 P3722 [AH2017/HNOI2017]影魔
    洛谷 P4770 [NOI2018]你的名字
    清北考前刷题day3下午好
    P3043 [USACO12JAN]牛联盟Bovine Alliance(并查集)
    bzoj3252攻略(线段树+dfs序)
    清北考前刷题day2早安
    清北考前刷题day2下午好
    清北考前刷题day1下午好
  • 原文地址:https://www.cnblogs.com/LvLoveYuForever/p/5664021.html
Copyright © 2011-2022 走看看