2
아래의 테스트 사례가 있는데 질문이 있습니다. 왜 groups 매개 변수없이 중첩 된 속성의 유효성 검사가 항상 실패합니까? 그룹이없는 중첩 된 속성의 유효성 검사를 어떻게 수행 할 수 있습니까?Hibernate Validator - 중첩 된 속성의 유효성 확인
package validation;
import java.util.Set;
import javax.validation.*;
import javax.validation.constraints.*;
import junit.framework.Assert;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.junit.*;
@Slf4j
public class NestedPropertiesTest {
private ValidatorFactory factory;
private Validator validator;
@Before
public void setUp() throws Exception {
log.info("\n\nTest start:");
this.factory = Validation.buildDefaultValidatorFactory();
this.validator = factory.getValidator();
}
@Test
public void testNestedBarNullValue() {
Foo foo = new Foo();
Bar bar = new Bar();
bar.setNotempty(null);
foo.setBar(bar);
log.info("With groups:");
Set<ConstraintViolation<Foo>> errors = validator.validateProperty(foo, "bar.notempty", Checks.class);
logErrors(errors);
Assert.assertFalse(errors.isEmpty());
log.info("Without groups:");
errors = validator.validateProperty(foo, "bar.notempty");
logErrors(errors);
Assert.assertFalse(errors.isEmpty());
}
@Test
public void testNestedBarMinSize() {
Foo foo = new Foo();
Bar bar = new Bar();
bar.setNotempty("1");
foo.setBar(bar);
log.info("With groups:");
Set<ConstraintViolation<Foo>> errors = validator.validateProperty(foo, "bar.notempty", Checks.class);
logErrors(errors);
Assert.assertFalse(errors.isEmpty());
log.info("Without groups:");
errors = validator.validateProperty(foo, "bar.notempty");
logErrors(errors);
Assert.assertFalse(errors.isEmpty());
}
@SuppressWarnings("rawtypes")
private void logErrors(Set errors) {
log.info("Nr. of validation errors: {}", errors.size());
for (Object error : errors) {
ConstraintViolation cv = (ConstraintViolation) error;
log.info("{}: {}", cv.getPropertyPath(), cv.getMessage());
}
}
@Data private class Foo {
@Valid private Bar bar;
}
@Data private class Bar {
@NotNull(groups=Checks.class)
@Size(min = 2, groups=Checks.class)
private String notempty;
}
private interface Checks {}
}
(단지 경우) 내 치어 :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>noorg</groupId>
<artifactId>validation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.11.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.4</version>
</dependency>
</dependencies>
</project>
종류가
기독교
내 테스트 케이스에 관하여
사전에
는들으 0
Thx, 많이 설명합니다. – Christian