2011-06-09 61 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 /”目录下,该目录与资源类路径上的“./”相同。

(你可以用它的实验,不过这就是所有我可以找出。)

对不起。