JEE7 Bean 유효성 검사는 CDI와 자동으로 통합됩니다. 예를 들어, CDI 컨테이너를 사용하는 경우 javax.validation.Validator를 주입하고 사용하여 빈이 일부 제약 조건을 위반하는지 확인하지 않아도됩니다. 그래서, 나는 같은 것을 할 필요가 없습니다 :Bean 유효성 검사와 CDI 통합 재정의 또는 비활성화
@Inject
Validator validator;
...
SoccerPlayer player = new SoccerPlayer();
player.setFirstName(firstName);
player.setLastName(lastName);
player.setAge(age);
Set<ConstraintViolation<SoccerPlayer>> violations = validator
.validate(player);
그러나
public class SoccerPlayer {
@NotNull
@Size(min = 5)
private String firstName;
@NotNull
@Size(min = 5)
private String lastName;
@Max(50)
@Min(value=16, groups = GoalKeeper.class)
private int age;
private String position;
public SoccerPlayer() {
}
// Getters and setters omitted
}
자동 @Valid 주석을 확인할 수있는 다음의 SoccerPlayer 콩을.
public class SoccerPlayerProcessor {
public void processPlayer(@Valid SoccerPlayer player){
// Do stuff with the player.
}
}
이 경우에는 유효성 검증 동작을 다양 화하기 위해 @Valid 주석과 함께 그룹을 사용할 수 없습니다.
그래서 내 목표를 달성 할 수있는 방법이 있습니까? 또는 다른 방법으로 콩 검증과 CDI 통합을 비활성화 할 수 있습니까? 내 사용자 정의 구현으로 기본 CDI javax.validation.Validator를 무시할 수 있습니까?
저는 WebSphere Liberty 프로파일을 어플리케이션 서버로 사용하고 있습니다.
미리 감사드립니다.
버전 1.1, 콩 검증이의 JavaTM EE에 대한 CDI (컨텍스트 및 의존성 삽입 (Dependency Injection)와 통합되어 있습니다 :
더 정확하게하려면,이 추출물이다).
이 통합 CDI는 검사기 및 ValidatorFactory에 대한 관리 빈을 제공하고, 제약 조건에 검증뿐만 아니라 사용자 지정 메시지 보간,에 이동 리졸버, 제약 유효성 검사기 공장 및 매개 변수 이름 제공자 의존성 주입을 가능하게한다.
또한 메소드 및 CDI 관리 Bean의 생성자에 대한 매개 변수 및 반환 값 제약 조건은 호출시 자동으로 유효성이 검사됩니다.
응용 프로그램이 Jave EE 컨테이너에서 실행되는 경우이 통합은 기본적으로 사용됩니다.
제 질문은,이 기본 동작을 비활성화하는 방법이 있습니까? 아니면 대체 CDI 인터셉터를 무시할 수 있습니까? 아니면 불가능한가요?
"@ Valid' 어노테이션과 함께 그룹을 사용할 수 없다는 것은 무엇을 의미합니까? – Rouliboy
GoalKeeper.class 그룹으로 SoccerPlayer의 유효성을 검사하고 싶습니다. AFAIK 나는 @Valid (groups = GoalKeeper.class)와 같은 것을 할 수 없다. 기본 Validator를 재정의 할 수 있으면 사용자 정의 주석 (예 : @Validate (groups = GoalKeeper.class) 그룹 필드가있는 Validate)으로 API에 주석을 달 수 있으며 Validator에서 주석이 달린 모든 bean을 수집하고 특정 그룹. – mancioshell