Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate验证程序:冲突消息语言_Java_Hibernate_Junit_Hibernate Validator - Fatal编程技术网

Java Hibernate验证程序:冲突消息语言

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

我有一个测试类,我正在测试一个域模型,该域模型用@NotNull注释

在我的测试课上,我首先得到验证器

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();
}