spring註解 @Valid 的作用說明

spring註解 @Valid 的作用

在controller中的方法上面寫有註解@Valid UserRequest 的作用。

備註:這裡一個@Valid的參數後必須緊挨著一個BindingResult 參數,否則spring會在校驗不通過時直接拋出異常,BindingResult是springmvc的一個驗證框架。

是對該UserRequest 實體進行校驗,

在userRequest類中的屬性上使用spring的註解

spring註解 @Valid 作用范圍

@Valid隻作用於當前類的基本類型,不能作用引用類型

建立兩個基本類

@Data
@AllArgsConstructor
@NoArgsConstructor
public class NewUser {
    @NotEmpty
    private String name;
    @NotEmpty
    private String password;
}
@Data
public class UserRequest {
    @NotEmpty
    private String groupName;
    
    private List<NewUser> users;
}

建立一個請求

    @RequestMapping(path = {"/ValidTest"})
    public String Valid(@Valid @RequestBody UserRequest userRequest) {
        System.out.println(userRequest);
        return "valid test";
    }

實驗測試

可以看到類NewUser裡面的@NotEmpty並未生效。

修改UserRequest(對users加入@Valid)

@Data
public class UserRequest {
    @NotEmpty
    private String groupName;
    @Valid
    private List<NewUser> users;
}

再次發送請求

可以看到Valid生效,此時加上name的值

綜上,@Valid 作用的類中有其他類時,需要逐層加上@Valid

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: