笔记_JSR303--表单校验

要在应用校验,需要:
  • 在被校验的类上声明校验规则(Taco类);
  • 在控制器方法上声明要进行校验(DesignTacoController#processDesign()和OrderControlller#processOrder());
  • 修改表单视图以展现校验错误。
1.声明校验规则
@Data
public class Taco {
    @NotNull	//name属性不为空或null
    //name属性至少有5个字符长度
    @Size(min=5, message = "Name must be at least 5 characters long!")
    private String name;
    @NotNull
    @Size(min = 1, message = "You must choose at least 1 ingredient!")
    private List<String> ingredients;
}
@Data
public class Order {
	//name属性不能为空白字段
    @NotBlank(message = "Name is required")
    private String name;
    @NotBlank(message = "Street is required")
    private String street;
    @NotBlank(message = "City is required")
    private String city;
    @NotBlank(message = "State is required")
    private String state;
    @NotBlank(message = "Zip code is required")
    private String zip;
    //合法的信用卡号码
    @CreditCardNumber(message = "Not a valid credit card number")
    private String ccNumber;
    //符合MM/YY格式
    @Pattern(regexp = "^(0[1-9]|1[0-2])([\\/])([1-9][0-9])$",
            message = "Must be formatted MM/YY")
    private String ccExpiration;
    //是一个3位的数字
    @Digits(integer = 3, fraction = 0, message = "Invalid CVV")
    private String ccCVV;

}
2. 在表单绑定的时候执行校验

​ 添加了@Valid注解对Taco对象进行校验和Errors属性判断是否出错。

@PostMapping
public String processDesign(@Valid Taco design, Errors errors) {
    if (errors.hasErrors()) {
    	return "design";
    }
    log.info("Processing design:"+design);
    return "redirect:/order/current";
}
@PostMapping
public String processOrder(@Valid Order order, Errors errors) {
    if(errors.hasErrors()) {
    	return "orderForm";
    }
    log.info("Order submitted: " + order);
    return "redirect:/";
}
3. 展现错误

fields.hasErrors()会检查ccNumber域是否存在错误,th:errors属性会引用ccNumber输入域,如果该输入域存在错误,将会把**<span>**元素的占位符内容替换为校验信息。

<h3>Here's how I'll pay...</h3>
<label th:for="ccNumber">Credit Card #:</label>
<input type="text" th:name="ccNumber" />
<span class="validationError"
      th:if="${#fields.hasErrors('ccNumber')}" th:errors="*{ccNumber}">CC Num Error</span>
<br>
4. 结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值