2014-03-26 85 views
0

我使用的彈簧數據休息,我需要使用註釋,我在我的配置類是已經做了配置messages.properties配置爲驗證消息財產,如何使用註釋春天

@Bean public ReloadableResourceBundleMessageSource messageSource(){ 
    ReloadableResourceBundleMessageSource reloadableResourceBundleMessageSource = new ReloadableResourceBundleMessageSource(); 
    reloadableResourceBundleMessageSource.setBasename("messages"); 
    return reloadableResourceBundleMessageSource; 
} 

和試圖訪問該屬性在我messages.property文件,

notnull.empty=rr is required. 

如,

ValidationUtils.rejectIfEmptyOrWhitespace(arg1, "rr", "notnull.empty", "test is required."); 

在我的驗證類。但是隻收到默認消息,如果我刪除默認消息null收到。是否可以通過註釋配置驗證消息屬性文件?對泉水來說是新的,所以我不敢打賭。提前致謝。

+0

嘗試更改'reloadableResourceBundleMessageSource.setBasename(「messages」);'中參數的de值並使用類似於此reloadableResourceBundleMessageSource.setBasename(「/ WEB-INF/messages/messages」)的正確路徑;' –

+0

謝謝Fran。其實我的項目中沒有WEB-INF文件夾。我已經放置這樣並工作,**** reloadableResourceBundleMessageSource.setBasename(「classpath:/ message」); **。如果我們留在classpath中意味着它不能被重新加載或者什麼?我是否必須考慮重新定位屬性文件? – jAddict

+0

我在下面創建了一個正確的答案。如果它對你有幫助,請投票。問候 –

回答

1

問題是它無法找到消息文件。需要爲setBasename方法提供正確的位置路徑。你可以做到這一點在幾個方面,我會告訴你們兩個:

從項目的根1.採用的路徑,如:

reloadableResourceBundleMessageSource.setBasename("/WEB-INF/messages/messages")‌​; 

在classpath中2,採用的路徑,如:

reloadableResourceBundleMessageSource.setBasename("classpath:/messages/messages")‌​; 

我更喜歡第一個,因爲服務器用來緩存從類路徑加載的文件,並且更難捕捉到消息文件中的更改。