diff --git a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java index c2ab0310b..40b031b51 100644 --- a/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java +++ b/ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java @@ -5,16 +5,23 @@ import com.ruoyi.common.utils.MessageUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; +import lombok.Data; +import org.hibernate.validator.constraints.Range; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + /** * 测试国际化 * * @author Lion Li */ +@Validated @Api(value = "测试国际化控制器", tags = {"测试国际化管理"}) @RestController @RequestMapping("/demo/i18n") @@ -31,4 +38,39 @@ public class TestI18nController { public AjaxResult get(@ApiParam("国际化code") String code) { return AjaxResult.success(MessageUtils.message(code)); } + + /** + * Validator 校验国际化 + * 不传值 分别查看异常返回 + * + * 测试使用 not.null + */ + @ApiOperation("Validator 校验国际化") + @GetMapping("/test1") + public AjaxResult test1(@NotBlank(message = "{not.null}") String str) { + return AjaxResult.success(str); + } + + /** + * Bean 校验国际化 + * 不传值 分别查看异常返回 + * + * 测试使用 not.null + */ + @ApiOperation("Bean 校验国际化") + @GetMapping("/test2") + public AjaxResult test2(@Validated TestI18nBo bo) { + return AjaxResult.success(bo); + } + + @Data + public static class TestI18nBo { + + @NotBlank(message = "{not.null}") + private String name; + + @NotNull(message = "{not.null}") + @Range(min = 0, max = 100, message = "{length.not.valid}") + private Integer age; + } } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ValidatorConfig.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ValidatorConfig.java index 258e855cd..0a2007c81 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ValidatorConfig.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/ValidatorConfig.java @@ -1,12 +1,14 @@ package com.ruoyi.framework.config; import org.hibernate.validator.HibernateValidator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; -import javax.validation.Validation; import javax.validation.Validator; -import javax.validation.ValidatorFactory; +import java.util.Properties; /** * 校验框架配置类 @@ -16,16 +18,26 @@ import javax.validation.ValidatorFactory; @Configuration public class ValidatorConfig { + @Autowired + private MessageSource messageSource; + /** * 配置校验框架 快速返回模式 */ @Bean public Validator validator() { - ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class) - .configure() - .failFast(true) - .buildValidatorFactory(); - return validatorFactory.getValidator(); + LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean(); + // 国际化 + factoryBean.setValidationMessageSource(messageSource); + // 设置使用 HibernateValidator 校验器 + factoryBean.setProviderClass(HibernateValidator.class); + Properties properties = new Properties(); + // 设置 快速异常返回 + properties.setProperty("hibernate.validator.fail_fast", "true"); + factoryBean.setValidationProperties(properties); + // 加载配置 + factoryBean.afterPropertiesSet(); + return factoryBean.getValidator(); } }