java 数据验证_Java 数据验证

在web开发当前就会遇到一些数据有效性验证的相关代码编写。

一般的写法如:

public class User { public String username; public String password; public Integer age;}

public addUser(User user) { String username = user.getUsername(); Integer age = user.getAge(); String password = user.getPassword(); String errorMsg = ""; if(username == null || username.equals("") { errotMsg += "用户名不可为空"; } // ..........很多if,有多少个写多少个,太机械了。就一代码搬运工。}

java 后台验证相关问题:

javax.validation.Validator

org.hibernate.validator.internal.engine.ValidatorImpl

1、User添加注释public class User { @NotNull public String username; @NotNull public String password; @NotNull public Integer age;}public addUser(User user) { Iterator> iterator = validator.validate(user) StringBuilder buf = new StringBuilder(256); while (iterator.hasNext()) { buf.append(";"); ConstraintViolation> elem = iterator.next(); if (elem != null) { buf.append(elem.getPropertyPath() + elem.getMessage()); } } System.out.println(buf);}

utils 拿去用吧。public class Validators { private static class ValidatorHolder { static Validator validator = new Validators().getValidator(); } private final Logger logger = LoggerFactory.getLogger(Validators.class); private final ValidatorFactory factory; private Validators() { try { Configuration> factoryCfg = Validation.byDefaultProvider().configure(); factory = factoryCfg.buildValidatorFactory(); } catch (final ValidationException ex) { logger.error("Bean Validation provider can not be found, no validation will be performed"); throw ex; } } private Validator getValidator() { return factory.getValidator(); } /** * 校验指定bean的单个属性值 * @param bean 需要校验的bean * @param name 需要校验的属性名 * @return 需要校验的属性的错误信息 */ public static String validateProperty(Object bean, String name) { return parseConstraintViolations(ValidatorHolder.validator.validateProperty(bean, name)); } /** * 校验指定bean的全部属性 * @param bean 需要校验的bean * @return 所有错误信息 */ public static String validate(Object bean) { return parseConstraintViolations(ValidatorHolder.validator.validate(bean)); } public static String parseConstraintViolations(Set> constraintViolations) { if (CollectionUtils.isEmpty(constraintViolations)) { return null; } Iterator> iterator = constraintViolations.iterator(); ConstraintViolation first = iterator.next(); //单个校验错误 if (!iterator.hasNext()) { return first.getPropertyPath() + first.getMessage(); } // two or more elements StringBuilder buf = new StringBuilder(256); //Java default is 16, probably too small if (first != null) { buf.append(first.getPropertyPath() + first.getMessage()); } while (iterator.hasNext()) { buf.append(";"); ConstraintViolation> elem = iterator.next(); if (elem != null) { buf.append(elem.getPropertyPath() + elem.getMessage()); } } return buf.toString(); }}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值