0
최대 절전 모드 유효성 검사기 유효성 검사 메시지의 메시지 값으로 {this}를 넣고 싶습니다. \ {이 \} 최대 절전 유효성 검사기 메시지에서 중괄호를 이스케이프하는 방법 (테스트 사례 제공)
그러나 Hibrnate 검사기는 지정된 키에 대한 메시지가 있는지 확인하는 시도를 : 그래서 내가 파일 속성이 주어진 메시지의 가치를 탈출했다. 이것이 버그라고 생각하지만 어쩌면 내가 잘못하고있는 것일까 요? (최대 절전 모드 - 유효성 검사기 4.3.1와 5.0.1 테스트 - 동일한 결과 - 스택 오버 플로우테스트 케이스 :
(이 등록 정보 파일이 없습니다 단순화를 위해, 난 그냥 자바 클래스의 값을 반환 현실. 는 handleGetObject가) 내 사용자가 제공하는 속성의 값을 읽을 것입니다 :
import org.hibernate.validator.HibernateValidator;
import org.hibernate.validator.HibernateValidatorConfiguration;
import org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorFactoryImpl;
import org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator;
import org.hibernate.validator.spi.resourceloading.ResourceBundleLocator;
import org.junit.Test;
import javax.validation.*;
import javax.validation.constraints.Max;
import java.util.Enumeration;
import java.util.Locale;
import java.util.ResourceBundle;
import java.util.Set;
public class HibValTest {
@Test
public void shouldNotSubstituteEscaped() throws Exception {
MessageInterpolator interpolator = new ResourceBundleMessageInterpolator(new ResourceBundleLocator() {
@Override
public ResourceBundle getResourceBundle(Locale locale) {
return new ResourceBundle() {
@Override
protected Object handleGetObject(String key) {
return "\\{escapedKey\\}";
}
@Override
public Enumeration<String> getKeys() {
throw new UnsupportedOperationException();
}
};
}
}, false);
HibernateValidatorConfiguration config = Validation.byProvider(HibernateValidator.class).configure();
config = config.messageInterpolator(interpolator).constraintValidatorFactory(new ConstraintValidatorFactoryImpl());
ValidatorFactory factory = config.buildValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<A>> validate = validator.validate(new A());
}
private class A {
@Max(value=1, message = "{key}")
private int a=2;
}
}
결과 :.
이 실제로 벌레처럼 보이는at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.resolveParameter(ResourceBundleMessageInterpolator.java:244)
at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateBundleMessage(ResourceBundleMessageInterpolator.java:211)
at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.resolveParameter(ResourceBundleMessageInterpolator.java:244)
at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateBundleMessage(ResourceBundleMessageInterpolator.java:211)
at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.resolveParameter(ResourceBundleMessageInterpolator.java:244)
at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateBundleMessage(ResourceBundleMessageInterpolator.java:211)
at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.resolveParameter(ResourceBundleMessageInterpolator.java:244)
at org.hibernate.validator.messageinterpolation.ResourceBundleMessageInterpolator.interpolateBundleMessage(ResourceBundleMessageInterpolator.java:211)
는 해결 제안에 관해서는 https://hibernate.atlassian.net/browse/HV-798 –
제출 -이되어 현재 우리가 ??? '키를 반환으로 우리하지 편리 ??? ' 누락 된 키가 속성에 누락 된 부분이 있는지 확인합니다. –