2013-05-09 53 views
2

我已經在java中,我正在使用javax.validation驗證以下這段代碼一類:現在如何自定義的javax驗證區域

ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory(); 
    Validator validator = validatorFactory.getValidator(); 
    Set<ConstraintViolation<ApplicationRequest>> validationErrors = validator.validate(request); 

    for (ConstraintViolation<MyObject> valErrors : validationErrors) { 
     errors.add(valErrors.getPropertyPath() + " " + valErrors.getMessage() + ". "); 
    } 

,如果我在西班牙的服務器執行它時,錯誤信息以西班牙語顯示。但是,當我在測試服務器(安裝在英文環境中)中執行它時,消息以英文顯示。我怎麼能告訴javax驗證使用西班牙語的區域設置。可能嗎?

回答

0

我終於解決了它使用屬性文件對每個區域設置,命名ValidationMessages_es.properties或ValidationMessages_pt.properties等

在他們每個人我已經定製與每一個使用的消息:

javax.validation.constraints.NotNull.message=no puede ser nulo 
org.hibernate.validator.constraints.NotEmpty.message=no puede estar vacío 
javax.validation.constraints.Size.message=debe tener entre {min} y {max} caracteres 
javax.validation.constraints.Min.message=debe ser mayor que {value} 
javax.validation.constraints.Past.message=debe ser una fecha pasada 
1

當啓動應用程序,您可以設置默認的語言環境: how do I set the default locale for my JVM?

如果您正在使用應用程序服務器只是看文檔如何做到這一點 - 通常沒有配置要做到這一點,例如JBoss的需要將-Duser.language = en添加到run.conf的JAVA_OPTS部分。

+0

我們使用的是春天,所以我改變了我的應用程序,配置與\t的 \t \t <屬性名= 「defaultLocale」value =「ES」/>,但它不會產生任何區別。沒有任何選項可以直接配置javax.validation嗎? – Goyo 2013-05-10 10:10:01