模拟场景校验请求参数
private void checkParam(List<ReqAppAdminDTO> req) {
// 校验管理员如果已存在,则抛出已存在异常
req.forEach(item -> {
AppAdminDO appAdminDO = appAdminMapper.selectByAppIdAndAdminNo(item.getAppId(), item.getAdminNo());
if (ObjectUtil.isNotEmpty(appAdminDO)) {
CheckUtil.check(false, ErrorMessagesConstants.APP_ADMIN_IS_EXIST, item.getAdminNo());
}
});
req.forEach(item -> {
CheckUtil.check(false, ErrorMessagesConstants.PARAM_IS_NULL_CN, item.getTel());
});
}
在resources目录下配置文件message_zh_cn.properties
field.invalid=字段取值错误
param.is.null=参数为空
param.existed=参数已存在
img
使用注解配置
@Configuration
public class StaticFieldInjectionConfiguration {
/**
* 国际化配置
* @return
*/
@Bean
public MessageSource messageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasenames("i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
/**
* 工具类注入
*/
@PostConstruct
private void init() {
CheckUtil.setResources(messageSource());
LocalMessageUtil.setResources(messageSource());
}
}
效果
sucess
fail
详细步骤
在 Spring Boot 中配置国际化消息 。您可以按照以下步骤进行配置:
-
在
src/main/resources
目录下创建一个名为messages.properties
的文件,用于存储默认的消息。将您的英文消息添加到该文件中。例如:app.admin.is.exist=The application admin account [{0}] already exists.
-
创建其他语言的消息文件。在
src/main/resources
目录下创建对应语言的消息文件,例如messages_zh_CN.properties
(中文简体)和messages_fr.properties
(法语)。将相应语言的消息添加到对应的文件中。例如:messages_zh_CN.properties
:app.admin.is.exist=应用管理员账号[{0}]已存在。
messages_fr.properties
:app.admin.is.exist=Le compte administrateur de l'application [{0}] existe déjà.
-
在 Spring Boot 的配置文件(
application.properties
或application.yml
)中,添加以下配置:# 指定默认语言 spring.mvc.locale=zh_CN # 指定支持的语言 spring.mvc.locale-resolver=fixed spring.mvc.locale-resolver=fixed spring.mvc.locale-resolver=fixed spring.messages.basename=messages
spring: mvc: locale: zh_CN locale-resolver: fixed messages: basename: messages
这些配置将设置默认的语言为中文(
zh_CN
),并将消息文件的基本名称设置为messages
。 -
在您的代码中,您可以使用
MessageSource
来获取国际化消息。通过在需要获取消息的地方注入MessageSource
,然后使用getMessage
方法来获取消息。例如:@Autowired private MessageSource messageSource; public void someMethod() { String message = messageSource.getMessage("app.admin.is.exist", new Object[]{"admin"}, LocaleContextHolder.getLocale()); System.out.println(message); }
在上面的示例中,
getMessage
方法的第一个参数是消息代码,第二个参数是用于替换占位符的参数数组,第三个参数是当前的语言环境(通过LocaleContextHolder.getLocale()
获取)。