疯狂的狮子Li
2021-11-28 a94a0589dd4370d119a16a2c30783b503939bfd3
update [重磅更新] Validator 校验框架支持国际化
已修改2个文件
68 ■■■■ 文件已修改
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/config/ValidatorConfig.java 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-demo/src/main/java/com/ruoyi/demo/controller/TestI18nController.java
@@ -5,9 +5,15 @@
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;
/**
@@ -15,6 +21,7 @@
 *
 * @author Lion Li
 */
@Validated
@Api(value = "测试国际化控制器", tags = {"测试国际化管理"})
@RestController
@RequestMapping("/demo/i18n")
@@ -31,4 +38,39 @@
    public AjaxResult<Void> get(@ApiParam("国际化code") String code) {
        return AjaxResult.success(MessageUtils.message(code));
    }
    /**
     * Validator 校验国际化
     * 不传值 分别查看异常返回
     *
     * 测试使用 not.null
     */
    @ApiOperation("Validator 校验国际化")
    @GetMapping("/test1")
    public AjaxResult<Void> test1(@NotBlank(message = "{not.null}") String str) {
        return AjaxResult.success(str);
    }
    /**
     * Bean 校验国际化
     * 不传值 分别查看异常返回
     *
     * 测试使用 not.null
     */
    @ApiOperation("Bean 校验国际化")
    @GetMapping("/test2")
    public AjaxResult<TestI18nBo> 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;
    }
}
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 @@
@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();
    }
}