사양에 사용 : 최대 절전 모드 - 유효성 검사기 [5.2.4.Final, 스프링 컨텍스트 [4.2.2.RELEASE]지정은 빈
내가 솔루션으로 here 작업을 설명하기 위해 노력하고 이하. 그러나 아무런 제약 조건 위반이 발생하지 않고 & 것들이 단지 잘 통과합니다. 왜?
두 콩, 한 부모, 다른 자식이 있습니다. 그런데
package code;
import java.util.ArrayList;
import java.util.List;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Test {
public static void main(String[] args) throws NoSuchMethodException, SecurityException{
ApplicationContext context = new AnnotationConfigApplicationContext(SpringConfiguration.class);
SampleBean sampleBean = (SampleBean) context.getBean("SampleBean");
try{
SampleBeanParent parent = (SampleBeanParent) context.getBean("SampleBeanParent");
parent.acceptChildBean(sampleBean);
}
catch(ConstraintViolationException e){
System.out.println("there were validation errors");
}
}
}
, 난 설정은 적절 한 봄 레벨을 가지고
package code;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@Service("SampleBeanParent")
@Validated
public class SampleBeanParent {
public void acceptChildBean(@NotNull(message = "child cannot be null")
// @Valid
@Validated(Group1.class)
SampleBean childBean) throws NoSuchMethodException, SecurityException{
System.out.println("successfully finished");
}
}
테스트 클래스는 다음과 같습니다 부모 bean 정의는 다음과 같습니다
package code;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.NotBlank;
import org.hibernate.validator.constraints.NotEmpty;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@Service("SampleBean")
@Validated
public class SampleBean {
@NotNull(message= "value can not be null" , groups = Group1.class)
// @NotNull(message= "value can not be null")
private Integer value;
@NotNull(message= "value1 can not be null" , groups = Group2.class)
// @NotNull(message= "value can not be null")
private Integer value1;
public Integer getValue() {
return value;
}
public void setValue(@NotNull
Integer value) {
this.value = value;
}
public Integer getValue1() {
return value1;
}
public void setValue1(Integer value1) {
this.value1 = value1;
}
}
아래로 아이의 정의는 콩으로 아래 &로 잘 작동합니다. (위의 코드에서 작업 케이스에 대한 그룹이없는 유효성 검사 행에 주석을 달았습니다.) 그래서 이것은 문제가되지 않습니다 :)
package code;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean;
import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;
@Configuration
@ComponentScan(basePackageClasses = {SampleBean.class})
public class SpringConfiguration {
@Bean(name = "validator")
public LocalValidatorFactoryBean initValidatorFactory(){
return new LocalValidatorFactoryBean();
}
@Bean
public MethodValidationPostProcessor initValidationPostProcessor(){
return new MethodValidationPostProcessor();
}
}
그리고"그룹 없이도 잘 작동합니까? " 귀하의 시나리오를 재현 해 보았고 SampleBean과 SampleBeanParent에서 그룹 관련 코드를 제거하려고 시도했지만 "성공적으로 완료되었습니다"도 나타났습니다 – hammerfest
기본으로 속한 모든 제약 조건의 정상적인 사례를 보여주기 위해 주석 문을 추가했습니다. 그룹의 관련 댓글을 주석 처리하고 댓글을 달으십시오. – nikel