⽐较幸运的是,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”视图名,表单会重新展现。
评论区