Java Hibernate验证程序:冲突消息语言
我有一个测试类,我正在测试一个域模型,该域模型用@NotNull注释 在我的测试课上,我首先得到验证器Java Hibernate验证程序:冲突消息语言,java,hibernate,junit,hibernate-validator,Java,Hibernate,Junit,Hibernate Validator,我有一个测试类,我正在测试一个域模型,该域模型用@NotNull注释 在我的测试课上,我首先得到验证器 private static Validator validator; @BeforeClass public static void setup() { validator = Validation.buildDefaultValidatorFactory().getValidator(); } 后来我进行了一个JUnit测试,在那里我正在测试域模型(比如说一个人) 我没有在@N
private static Validator validator;
@BeforeClass
public static void setup() {
validator = Validation.buildDefaultValidatorFactory().getValidator();
}
后来我进行了一个JUnit测试,在那里我正在测试域模型(比如说一个人)
我没有在@NotNull注释上设置任何自定义违规消息。因此hibernate validator将从hibernate validator jar中的资源包中提取默认消息。我的路径如下所示:
hibernate-validator-5.3.5.Final.jar
- org
- hibernate
- validator
...
ResourceBundle 'Validation Messages'
在这个资源包中,支持多种语言(英语、德语、法语等)
示例
@德语中的NotNull违规消息
javax.validation.constraints.NotNull.message = darf nicht null sein
@英文NotNull违规信息
javax.validation.constraints.NotNull.message = may not be null
问题:
在测试时,如何强制Hibernate Validator为资源包中的冲突消息选择特定语言?现在,我收到英语违规信息。但是,在另一台机器上,德语。从参考文档中浓缩的摘要: 默认情况下,在捆绑包中查找消息时将使用JVM的默认区域设置(locale#getDefault()) 在不接触源代码或摆弄操作系统/用户界面的情况下,尝试以下西班牙语消息:
java -Duser.country=ES -Duser.language=es
GKR的答案是正确的 可能有用的其他信息:如果您使用Maven和surefire插件,则需要执行以下操作:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Duser.language=en</argLine>
</configuration>
</plugin>
maven surefire插件
${maven surefire plugin.version}
一旦
-Duser.language=en
您可以使用Testframework的准备部分设置默认区域设置,这将影响违规消息的语言。如果您希望学习英语,请添加
setDefault(Locale.ENGLISH)
在构建验证器工厂之前。在您的示例中可能如下所示:
private static Validator validator;
@BeforeClass
public static void setup() {
Locale.setDefault(Locale.ENGLISH);
validator = Validation.buildDefaultValidatorFactory().getValidator();
}
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<forkMode>once</forkMode>
<argLine>-Duser.language=en</argLine>
</configuration>
</plugin>
private static Validator validator;
@BeforeClass
public static void setup() {
Locale.setDefault(Locale.ENGLISH);
validator = Validation.buildDefaultValidatorFactory().getValidator();
}