可能這個part of documentation會有幫助。在豆類中,您應該使用MessageSource
。在控制器或服務或任何其他豆你可以用它下一個方法:
@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>
...
現在有關配置。我會建議你保持缺省ID爲ResourceBundleMessageSource
bean。默認密碼是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
。
爲什麼。爲什麼你想要這個bundle而不是'MessageSource',它會將這個消息抽象出來。 –
因爲我需要用一個'ResourceBundle'來提供碧玉報告,並且他們的api只接受這個 – MichelReap
將'MessageSource'包裝在'MessageSourceResourceBundle'中。 –