为了账号安全,请及时绑定邮箱和手机立即绑定

springBoot + hibernate-validator 验证问题

springBoot + hibernate-validator 验证问题

宝慕林4294392 2019-01-18 09:07:46
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 继续校验 nick 的长度,而不是直接校验Phone 是不是为空?
查看完整描述

2 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

个人意见: 你说的那种累积性校验建议在前端做, 提交时高亮显示填充不完整/出错的. 而后端校验原则应该是尽早失败, 出错尽早返回, 而不是等第二个第三个错, 在后端做这个没有太大意义, 且性能体验不如在前端完成高效.

查看完整回答
反对 回复 2019-02-12
?
呼唤远方

TA贡献1856条经验 获得超11个赞

“哈”占两个字节长度啊,你min为2刚好通过啊

查看完整回答
反对 回复 2019-02-12
  • 2 回答
  • 0 关注
  • 1040 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号