/** * Copyright (c) 2018 人人开源 All rights reserved. * * https://www.renren.io * * 版权所有,侵权必究! */ package com.example.server.validator; import com.example.client.entity.RenException; import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.validation.beanvalidation.MessageSourceResourceBundleLocator; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import java.util.Locale; import java.util.Set; /** * hibernate-validator校验工具类 * 参考文档:http://docs.jboss.org/hibernate/validator/6.0/reference/en-US/html_single/ * * @author Mark sunlightcs@gmail.com * @since 1.0.0 */ public class ValidatorUtils { private static ResourceBundleMessageSource getMessageSource() { ResourceBundleMessageSource bundleMessageSource = new ResourceBundleMessageSource(); bundleMessageSource.setDefaultEncoding("UTF-8"); bundleMessageSource.setBasenames("i18n/validation"); return bundleMessageSource; } /** * 校验对象 * @param object 待校验对象 * @param groups 待校验的组 */ public static void validateEntity(Object object, Class... groups) throws RenException { Locale.setDefault(LocaleContextHolder.getLocale()); Validator validator = Validation.byDefaultProvider().configure().messageInterpolator( new ResourceBundleMessageInterpolator(new MessageSourceResourceBundleLocator(getMessageSource()))) .buildValidatorFactory().getValidator(); Set> constraintViolations = validator.validate(object, groups); if (!constraintViolations.isEmpty()) { ConstraintViolation constraint = constraintViolations.iterator().next(); throw new RenException(constraint.getMessage()); } } }