侧边栏壁纸
  • 累计撰写 79 篇文章
  • 累计创建 7 个标签
  • 累计收到 0 条评论

Bean Validation API

水龙吟
2022-04-01 / 0 评论 / 0 点赞 / 328 阅读 / 1,380 字
温馨提示:
本文最后更新于 2022-04-01,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
⽐较幸运的是,Spring⽀持Java的Bean校验API(Bean Validation
API,也被称为JSR-303)。这样的话,我们能够更容易地声明检验规则,⽽不
必在应⽤程序代码中显式编写声明逻辑。借助Spring Boot,要在项⽬中添加
校验库,我们甚⾄不需要做任何特殊的操作,这是因为Validation API以及
Validation API 的Hibernate实现将会作为Spring Boot web starter的传递
性依赖⾃动添加到项⽬中。

  @NotNull
  @Size(min=5, message="Name must be at least 5 characters long")
  // tag::allButValidation[]
  private String name;
  // end::allButValidation[]
  @Size(min=1, message="You must choose at least 1 ingredient")
  // tag::allButValidation[]
  private List<String> ingredients;

  @CreditCardNumber(message="Not a valid credit card number")
  //tag::allButValidation[]
  private String ccNumber;
  //end::allButValidation[]

  @Pattern(regexp="^(0[1-9]|1[0-2])([\\/])([1-9][0-9])$",
           message="Must be formatted MM/YY")
	正则
  //tag::allButValidation[]
  private String ccExpiration;
  //end::allButValidation[]

  @Digits(integer=3, fraction=0, message="Invalid CVV")
	数字精度
  //tag::allButValidation[]
  private String ccCVV;


使用的时候加注解即可@Valid
@PostMapping
    public String processDesign(@Valid Taco design, Errors errors) {
        if (errors.hasErrors()) {
            return "design";
        }
        log.info("Processing design: " + design);
        return "redirect:/orders/current";
    }

@Valid注解会告诉Spring MVC要对提交的Taco对象进⾏校验,⽽校验时
机是在它绑定完表单数据之后、调⽤processDesign()之前。如果存在校验错
误,那么这些错误的细节将会捕获到⼀个Errors对象中并传递给
processDesign()。processDesign()⽅法的前⼏⾏会查阅Errors对象,调⽤其
hasErrors()⽅法判断是否有校验错误。如果存在校验错误,那么这个⽅法将不
会处理Taco对象并返回“design”视图名,表单会重新展现。

0

评论区