在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ springBoot + hibernate-validator 驗證問題

springBoot + hibernate-validator 驗證問題

public class ScanRegisterBean implements Serializable{

    @Min(value = 1)
    @Max(value = Long.MAX_VALUE)
    private long id;

    @NotBlank(groups = {ScanRegister.class, Register.class})
    @Length(min = 2, max = 20,groups = {ScanRegister.class, Register.class})
    private String nick;

    @NotBlank(groups = {ScanRegister.class, Register.class})
    @Phone(mode = 0,groups = {ScanRegister.class, Register.class})
    private String phone;

    @NotBlank(groups = {ScanRegister.class, Register.class})
    @Length(min = 6, max = 20,groups = {ScanRegister.class, Register.class})
    private String pwd;

    @NotBlank(groups = {Register.class})
    private String deviceId;

    public interface ScanRegister {}

    public interface Register{}
}

hibernate-validator 配置的是 快速失敗,配置如下

@Configuration
public class HibernateConfig {

    // 配置 hibernate 快速失敗
    @Bean
    public Validator validator() {
        ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)
                                                .configure()
                                                .addProperty("hibernate.validator.fail_fast", "true")
                                                .buildValidatorFactory();
        Validator validator = validatorFactory.getValidator();
        return validator;
    }
}

有個問題就是,在校驗的時候不能先把一個字段校驗完畢,在校驗下一個字段。
比如:
前端提交的時候,
nick, phone, pwd 都不填的時候, 會提示用戶 nick 不能為空。然后再給nick賦值為 哈 的時候,再次提交,不會校驗nick 的長度, 而是直接校驗 phone,看phone是不是為空。怎么讓hibernate 繼續(xù)校驗 nick 的長度,而不是直接校驗Phone 是不是為空?

回答
編輯回答
萌小萌

“哈”占兩個字節(jié)長度啊,你min為2剛好通過啊

2017年10月9日 17:18
編輯回答
心沉

個人意見: 你說的那種累積性校驗建議在前端做, 提交時高亮顯示填充不完整/出錯的. 而后端校驗原則應該是盡早失敗, 出錯盡早返回, 而不是等第二個第三個錯, 在后端做這個沒有太大意義, 且性能體驗不如在前端完成高效.

2017年8月23日 15:42