javax.validation分組校驗(簡短版)


javax.validation注解校驗:我們使用的實體,有時候需要全部校驗它的字段,有時候其他地方使用只需要校驗它的部分字段。

解決辦法:使用分組校驗。

/**
     * 用戶名
     */
    @NotBlank(message = "用戶名不能為空!",groups = Group.AddGroup.class)
    private String userName;

    /**
     * 密碼
     */
    @NotBlank(message = "密碼不能為空!")
    private String password;

1.新增的時候我需要全部校驗字段(userName,password都校驗):

@RequestBody @Validated({Default.class, Group.AddGroup.class}) UserEntity userEntity, BindingResult bindingResult

或者

private BaseResponse validateParam(UserEntity userEntity) {
        List<String> validateError = ValidationUtil.validate(userEntity, Default.class, Group.AddGroup.class);//Default.class, Group.AddGroup.class
        if (validateError != null && validateError.size() > 0) { // validateError.get(0)
            return BaseResponse.failedCustom(validateError.get(0)).build();
        }
        return BaseResponse.successCustom().build();
    }

2.其他地方使用我只需要校驗部分字段(只校驗password字段,屬於默認分組Default):

@RequestBody @Validated({Default.class}) UserEntity userEntity, BindingResult bindingResult

或者

private BaseResponse validateParam(UserEntity userEntity) {
        List<String> validateError = ValidationUtil.validate(userEntity, Default.class);//Default.class, Group.AddGroup.class
        if (validateError != null && validateError.size() > 0) { // validateError.get(0)
            return BaseResponse.failedCustom(validateError.get(0)).build();
        }
        return BaseResponse.successCustom().build();
    }

3.只校驗userName字段,屬於分組AddGroup:

@RequestBody @Validated({Group.AddGroup.class}) UserEntity userEntity, BindingResult bindingResult

或者

private BaseResponse validateParam(UserEntity userEntity) {
        List<String> validateError = ValidationUtil.validate(userEntity,Group.AddGroup.class);//Default.class, Group.AddGroup.class
        if (validateError != null && validateError.size() > 0) { // validateError.get(0)
            return BaseResponse.failedCustom(validateError.get(0)).build();
        }
        return BaseResponse.successCustom().build();
    }

userName屬於AddGroup分組,password屬於Default默認分組(沒有添加自定義分組的字段都默認為Default分組)。它們屬於不同分組。校驗的時候選擇不同分組,只會校驗選擇的分組的字段。

詳解版參考:https://www.cnblogs.com/super-chao/p/15314566.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM