Browse Source

国际化兼容校验和ErrorCode

master
刘忱 2 years ago
parent
commit
b3c7f5e2c5
  1. 3
      win-framework/win-common/src/main/java/com/win/framework/common/exception/util/ServiceExceptionUtil.java
  2. 9
      win-framework/win-common/src/main/java/com/win/framework/common/util/i18n/MessageUtil.java
  3. 21
      win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/config/WinWebAutoConfiguration.java
  4. 1
      win-server/src/main/resources/application.yaml

3
win-framework/win-common/src/main/java/com/win/framework/common/exception/util/ServiceExceptionUtil.java

@ -4,6 +4,7 @@ import com.win.framework.common.exception.ErrorCode;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.exception.enums.GlobalErrorCodeConstants;
import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.util.i18n.MessageUtil;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
@ -77,7 +78,7 @@ public class ServiceExceptionUtil {
}
public static ServiceException exception0(Integer code, String messagePattern, Object... params) {
String message = doFormat(code, messagePattern, params);
String message = doFormat(code, MessageUtil.message(messagePattern), params);
return new ServiceException(code, message);
}

9
win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/core/util/MessageUtil.java → win-framework/win-common/src/main/java/com/win/framework/common/util/i18n/MessageUtil.java

@ -1,13 +1,14 @@
package com.win.framework.web.core.util;
package com.win.framework.common.util.i18n;
import cn.hutool.extra.spring.SpringUtil;
import org.springframework.context.MessageSource;
import org.springframework.context.NoSuchMessageException;
import org.springframework.context.i18n.LocaleContextHolder;
public class MessageUtil {
/**
* 根据消息键和参数 获取消息 委托给spring messageSource
* 根据消息键和参数 获取消息 委托给spring messageSource,获取不到则返回code
*
* @param code 消息键
* @param args 参数
@ -15,7 +16,11 @@ public class MessageUtil {
*/
public static String message(String code, Object... args) {
MessageSource messageSource = SpringUtil.getBean(MessageSource.class);
try {
return messageSource.getMessage(code, args, LocaleContextHolder.getLocale());
} catch (NoSuchMessageException ignored) {
return code;
}
}
}

21
win-framework/win-spring-boot-starter-web/src/main/java/com/win/framework/web/config/WinWebAutoConfiguration.java

@ -16,14 +16,18 @@ import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfigu
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.MessageSource;
import org.springframework.context.annotation.Bean;
import org.springframework.util.AntPathMatcher;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver;
import javax.annotation.Resource;
import javax.servlet.Filter;
@ -46,6 +50,23 @@ public class WinWebAutoConfiguration implements WebMvcConfigurer {
configurePathMatch(configurer, webProperties.getAdminApi());
}
/**
* 设置validator国际化
* @param messageSource
* @return
*/
@Bean
public LocalValidatorFactoryBean defaultValidator(MessageSource messageSource) {
LocalValidatorFactoryBean factoryBean = new LocalValidatorFactoryBean();
factoryBean.setValidationMessageSource(messageSource);
return factoryBean;
}
@Bean
public LocaleResolver localeResolver() {
return new AcceptHeaderLocaleResolver();
}
/**
* 设置 API 前缀仅仅匹配 controller 包下的
*

1
win-server/src/main/resources/application.yaml

@ -4,6 +4,7 @@ spring:
# i18 message 配置,对应 MessageSourceProperties 配置类
messages:
basename: i18n/bpm,i18n/infra,i18n/mes,i18n/report,i18n/scp,i18n/system,i18n/wms # 文件路径基础名
encoding: UTF-8
profiles:
include: druid

Loading…
Cancel
Save