2011-06-09 64 views
10

默認情況下,ValidationMessages.properties可以位於我的類路徑的根目錄中。我可以像com.myapp.Anything.properties一樣更改此文件的位置嗎?如何在Bean驗證中更改ValidationMessages.properties的位置

+2

你可以使用Spring的[LocalValidatorFactoryBean.setValidationMessageSource()](http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/validation/beanvalidation/LocalValidatorFactoryBean.html#setValidationMessageSource-org .springframework.context.MessageSource-)方法。看看[這個問題](http://stackoverflow.com/questions/28492763/spring-boot-jsr303-message-code-in-annotation-getting-ignored)。 或者如果你不想使用Spring,你可以使用相同的技術(查看LocalValidatorFactoryBean的源代碼) – Lu55 2015-09-23 11:42:13

回答

2

從JSR-303規範:

4.3.1.1。默認消息內插算法的默認消息內插使用下面的步驟:

  1. 消息參數從消息字符串提取並用作密鑰搜索名爲ValidationMessages所述的ResourceBundle(通常 物化爲屬性文件/ValidationMessages.properties和 其語言環境變化)使用定義的語言環境(見下文)。如果找到 屬性,則將消息參數替換爲消息字符串中的 屬性值。步驟1以遞歸方式應用 ,直到不執行替換(即,消息參數值 本身可以包含消息參數)。

看來這是默認和建議。爲了支持這一點,JSR-303 TCK使用TestNG將它們移動到「WEB-INF/classes /」目錄下,該目錄與資源類路徑上的「./」相同。

(你可以用它的實驗,不過這就是所有我可以找出。)

對不起。