2014-12-27 4 views
1

I 콩 검증 할 수있는 다음 코드했습니다 :국제화

ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); 
Validator validator = factory.getValidator(); 
Set<ConstraintViolation<MyObject>> validations = validator.validate(myObject); 
if (!CollectionUtils.isEmpty(violations)) { 
    for (ConstraintViolation<?> validateError : violations) { 

    } 
} 

표준 콩 검증 리소스 파일에서 메시지를받을 수있는 방법이 있습니까? 나는 다음과 같은 (비 표준 방식) 사용하고

:

Messages.get(validateError.getMessageTemplate().substring(1, 
    validateError.getMessageTemplate().length() - 1),locale); 
+0

인가 [이] (HTTP :/당신은 명시 적 Locale 인스턴스를 취 MessageInterpolator의 보간 방법을 사용하여 (부트 스트랩 동안 구성 # getDefaultMessageInterpolator()를 통해 액세스) 기본 메시지 보간의 실제 유효성 검사를 통과 할 수있다 /docs.jboss.org/hibernate/validator/5.1/reference/en-US/html/chapter-message-interpolation.html#section-message-interpolation) 달성하고자하는 것은 무엇입니까? – toniedzwiedz

+0

'번들에서 메시지를 찾을 때 기본적으로 JVM의 기본 로케일 (Locale # getDefault())가 사용됩니다. 전체 VM 언어를 변경하지 않고 언어를 사용자 정의하고 싶습니다! –

답변

1

당신이 (예를 들어, 사용자가 로케일) 일부 외부 기준에 따라 보간 로케일을 변경하려면 가정을, 사용자 정의를 지정할 수 있습니다 MessageInterpolator Bean 유효성 검사를 부트 스트랩 할 때. MyMessageInterpolator에서

ValidatorFactory validatorFactory = Validation.byDefaultProvider() 
     .configure() 
     .messageInterpolator(new MyMessageInterpolator()) 
     .buildValidatorFactory(); 
Validator validator = validatorFactory.getValidator(); 

당신이 다음 예를 들어 ThreadLocal을 통해 (사용자) 로케일을 검색 할 수 있습니다 : 당신은 XML을 통해 및 validation.xml 또는 프로그램과 같이 그렇게 할 수 있습니다.

public String interpolate(String messageTemplate, Context context, Locale locale)