可能这个文档的一部分会有所帮助。在您的bean中,您应该使用MessageSource
。在控制器、服务或任何其他bean中,您可以按照以下方式使用它:
@Controller
public class MyController{
@Autowired
private MessageSource messageSource;
....
@RequestMapping("/messages")
public String showMessages(ModelMap model) {
String englishMessage = messageSource.getMessage("commend.message", null,
new Locale("en", "US"));
String russianhMessage = messageSource.getMessage("commend.message", null,
new Locale("ru", "RU"));
...
}
}
在视图中(如果您使用JSP的话):
<div>
<span>
<spring:message code="commend.message"/>
</span>
</div>
...
现在关于配置。我建议您保留
ResourceBundleMessageSource
bean的默认id。默认id是
messageSource
:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<value>report.messages</value>
</property>
</bean>
当然,你可以像之前一样使用
@Qualifier
注解来自动装配该bean。但是大多数模板引擎(如JSP、Thymeleaf等)默认会查找名为
messageSource
的bean。因此,如果您保留默认名称,则无需更改模板引擎的设置。
不要忘记在应用程序类路径的根目录中放置包含每种所需语言的消息的属性文件。在这个例子中,它将是
report.messages.properties
(默认)、
report.messages_en_US.properties
和
report.messages_ru_RU.properties
。
ResourceBundle
来填充Jasper报表,而他们的API只接受这种类型。 - MichelReapMessageSource
包装在MessageSourceResourceBundle
中。 - M. DeinumMessageSource
,ResourceBundleMessageSource
是一个MessageSource
... 只需将其包装在MessageSourceResourceBundle
中,并将其传递给 JasperReport(s)。这也是 Spring 在其自己的 JasperReports 支持中所做的。 - M. Deinum