1. 程式人生 > >SpringBoot 表單驗證

SpringBoot 表單驗證

pattern 結果 digits system 當前 public err 框架 def

Valid 註解

JSR 303 校驗框架註解類:

? @NotNull 註解元素必須是非空
? @Null 註解元素必須是空
? @Digits 驗證數字構成是否合法
? @Future 驗證是否在當前系統時間之後
? @Past 驗證是否在當前系統時間之前
? @Max 驗證值是否小於等於最大指定整數值
? @Min 驗證值是否大於等於最小指定整數值
? @Pattern 驗證字符串是否匹配指定的正則表達式
? @Size 驗證元素大小是否在指定範圍內
? @DecimalMax 驗證值是否小於等於最大指定小數值
? @DecimalMin 驗證值是否大於等於最小指定小數值
? @AssertTrue 被註釋的元素必須為true
? @AssertFalse 被註釋的元素必須為false

Hibernate Validator擴展註解類:

? @Email 被註釋的元素必須是電子郵箱地址
? @Length 被註釋的字符串的大小必須在指定的範圍內
? @NotEmpty 被註釋的字符串的必須非空
? @Range 被註釋的元素必須在合適的範圍內

校驗結果保存在BindingResult或Errors對象中。
Validated是 Spring 對 Valid 的封裝,是 Valid 的加強版,支持更多特性。

示例代碼

實體類,對cupSize和age做了限制

@Data   // 使用 lombok 簡化Getter/Setter/toString/hashCode代碼
@Entity
public class Girl {
    @Id
    @GeneratedValue
    private Integer id;

    @NotEmpty(message = "Cup大小不能為空")
    private String cupSize;

    @NotNull(message = "年齡不能為空")
    @Min(value = 18, message = "未成年少女禁止入內")
    private Integer age;
}

在Controller中使用@Valid對@PathVariable @RequestParam @RequstBody進行驗證,驗證的結果保存在 BindingResult中

@PostMapping(value = "/girls")
    public Girl girlAdd(@Valid @RequestBody Girl girl, BindingResult bindingResult) {
        if (bindingResult.hasErrors()){
            System.out.println(bindingResult.getFieldError().getDefaultMessage());
            return null;
        }
        return girlRepository.save(girl);
    }

SpringBoot 表單驗證