我正在使用@ProprtySource读取属性文件,下面是我的代码 -
@PropertySource(value="classpath:/application.properties")
public class HomeService{
@Value("${message}")
String message;
}
同样在我的JSP中 -
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<spring:eval expression="@environment.getProperty('message')" />
两者都工作正常。
注意:我没有注册任何propertySourcePlaceHolderConfigurer
或ResourceBundle
,除此之外没有其他任何配置。
但是,只要我将spring:message
应用为 -
<spring:message code="message"/>
这给了我例外 -
javax.servlet.jsp.JspTagException:在代码&#39; message&#39;下找不到任何消息对于语言环境&#39; en_US&#39;。
答案 0 :(得分:1)
spring:message标签使用Spring的MessageSource概念为您提供国际化支持。 MessageSource是一个提供检索消息功能的接口。您需要配置ResourceBundleMessageSource才能使用spring:message-tag。
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages"/>
</bean>
或者通过java配置:
@Bean(name = "messageSource")
public ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}