2014-10-28 110 views
0

我最近開始使用國際化與Thymeleaf和Spring 4,因此使用文本內容爲默認值:Thymeleaf:如果消息解析器失敗

<span th:text="#{foo.bar}">Foo Bar</span> 

有沒有什麼辦法讓Thymeleaf實際顯示「富欄「如果foo.bar鍵不存在用戶的語言環境?

這是當前配置我有:

@Bean 
public MessageSource messageSource() { 
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); 
    messageSource.setBasenames("/WEB-INF/messages/messages"); 
    messageSource.setUseCodeAsDefaultMessage(true); // anything equivalent? 
    messageSource.setDefaultEncoding("UTF-8"); 
    messageSource.setCacheSeconds(0); 
    return messageSource; 
} 

回答

0

消息源的useCodeAsDefaultMessage屬性是用於防止異常的代碼映射的abscence最後手段。 (如果MessageSource不能找到你的代碼映射,它會拋出一個NoSuchMessageException異常)。它是用於開發和調試的,所以通常沒有乾淨的方法來做到這一點,因爲使用未定義的消息代碼不是一個好習慣。

+0

爲什麼我想這樣做只是簡單地使用英語語言作爲Thymeleaf模板中定義的默認語言,並讓消息代碼用'th:text'覆蓋它,如果用戶想要我們支持的語言環境。有沒有像這樣? – damd 2014-10-28 09:15:54

+1

一個好的i18n方法是也將您的英文信息外化,即將它們放置在沒有區域擴展名的屬性文件中,如果沒有與區域相關的版本,則將其作爲默認選擇。 Thymeleaf html頁面中的文本主要用於原型製作。 – grid 2014-10-28 09:25:50