Spring 框架:在区域设置代码下找不到消息

问题描述 投票:0回答:8
spring spring-mvc message
8个回答
26
投票

一般来说,出现此类问题不是因为区域设置不存在,而是因为

MessageBundle
配置不正确。在您的情况下,您似乎需要删除基本名称中的“/”。

<bean id="messageSource"
     class="org.springframework.context.support.ReloadableResourceBundleMessageSource"
     p:basename="/WEB-INF/messages" />

为什么会这样:

如果您有

messages.properties
messages_en.properties
捆绑包,则捆绑包名称为
messages
。如果它们位于
WEB-INF
文件夹中,则基本名称为
/WEB-INF/messages
,即根据 /
path/to/bundle/bundlename
。如果
messages.properties
文件夹中有
/WEB-INF/messages
,则相应的基本名称为
/WEB-INF/messages/messages


15
投票

对于 Spring Boot,你需要这样的东西:

@Bean
public MessageSource messageSource() {
     ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
     messageSource.setBasename("/WEB-INF/classes/messages");
     return messageSource;
}

7
投票

对于 Spring Boot 文件夹资源,您需要添加 Bean 的名称:

@Bean(name="messageSource")
public ResourceBundleMessageSource bundleMessageSource() {
ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("messages");
return messageSource;
}

4
投票

你也可以在 Spring boot application.properties 中指定

# INTERNATIONALIZATION 
spring.messages.basename=i18n/messages
spring.messages.encoding=UTF-8

2
投票

您可以在application.properties中添加一些代码:

spring.messages.always-use-message-format=false
spring.messages.basename=messages
spring.messages.cache-seconds=-1
spring.messages.encoding=UTF-8
spring.messages.fallback-to-system-locale=true

2
投票

也许会对某人有所帮助。

errors.rejectValue("fieldName", "errorCode", "textException");

如果你不像我一样使用 messageResource 那么你应该写“”而不是“errorCode”。

示例:

errors.rejectValue("name", "", "This field should not be empty");

这种方式帮助我避免了异常。


0
投票

对于 Maven/Spring 项目,将消息源基本名称设置为“classpath:messages”,并将 messages*.properties 文件放在 src\main\java 中 资源。字符串“classpath:”是硬编码的,可能意味着在应用程序的 java 类的根目录中搜索。


-1
投票

默认情况下,maven 假设在

下找到此类资源包消息源

src/main/资源

。通过将所有必要的文件夹移动到该位置下,并确保上下文中有以下代码

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename"><value>messages</value></property>
</bean>
© www.soinside.com 2019 - 2024. All rights reserved.