2013-01-23 1 views
3

큰 빈의 유효성을 검사합니다. 이것은 동적 양식 페이지를 기반으로합니다. 유효성을 검사중인 일부 필드는 양식에 표시되지 않으므로 빈 또는 null입니다. 그러나 보이지 않는 필드를 검증하는 것을 원하지 않습니다. 때로는 눈에 띄기도하고 유효성을 검사하기를 원합니다. 때로는 눈에 보이지 않아 유효성을 검사하기를 원하지 않습니다. 먼저 제출하기 전에 직렬화 된 양식에서이 필드를 제거하는 방법을 사용했습니다. 그러나 유효성 검사 태그가있는 빈에 존재하기 때문에 누락 된 필드의 유효성을 검사합니다. 내가하려는 일을하는 올바른 방법은 무엇입니까?JSR-303 일부 경우 콩의 특정 필드에 대한 유효성 검사를 무시하는 방법

답변

3

하나의 가능한 접근법은 유효성 검사 그룹을 사용하는 것입니다. 여러 그룹에 대해 서로 다른 유효성 검사 규칙을 정의합니다. 그런 다음이 그룹 중 하나 또는 그룹 세트에 대해 유효성 검사기를 호출 할 수 있습니다.

public class TestBean { 

    @NotNull(groups= {Group1.class}) 
    @Size.List({ 
     @Size(min=1, groups= {Group1.class}), 
     @Size(min=0, groups= {Group2.class}) 
    }) 
    private String test; 
} 

public interface Group1 { } 
public interface Group2 { } 

그런 다음 그룹이 here을 볼 검증에 대한 자세한 내용은이 그룹

Validator validator = ....; 
Set<ConstraintViolation<Object>> constraintViolations = validator.validate(objectToValidate, Group1.class); 

중 하나 이상에 대한 검증을 호출 할 수 있습니다.

+0

링크 된 페이지를 읽은 후이 상황에 그룹화를 사용하는 방법을 잘 모르겠습니다. 나는 단언하기를 원하지 않는다. 문제가있는 필드 옆에있는 오류로 페이지로 돌아 가야한다. 또한 하나의 빈입니다. Bean 확장 Bean 확장 Bean이 아닙니다. 그리고 많은 분야에서 기본 유효성 검사기를 사용하는 것을 선호합니다. 나는 모든 분야에 대한 관례를 쓰고 싶지 않다. –

+0

그룹이 올바른 방향이라고 생각합니다. 그룹은 특정 유스 케이스에 따라 여러 개의 제약 조건을 선택하거나 그룹화하기위한 것입니다. 그룹을 사용할 때 "빈 확장 빈"이 필요하지 않습니다. 문제는 유효성 검사 호출에서 올바른 유효성 검사 그룹을 대상으로 지정하는 방법입니다. 이것은 통합 기술과 Bean 유효성 검사를 사용하는 방법에 따라 달라집니다. – Hardy

+0

그룹과 관련된 문제는 페이지에 표시되는 필드에 따라 그룹이 다르다는 것입니다. 또한 필드 수준 오류가 페이지에 표시되기를 원합니다. 나는 유효성 검사기에 무시 목록을 전달하는 방법을 모색 중입니다. 그런 다음 필드가 해당 목록에 있으면 유효성 검사를 통과합니다. 목록에없는 경우 유효성 검사를 수행하고 통과가 적절하게 실패합니다. 그런 식으로 필드를 보이게 할 것인지 결정할 것인지를 결정하는 논리는 한 곳에서 두 지점이 아니라 그 위치에 있습니다. 유지하기가 어려울 것입니다. 트릭은 모든 유효성 검사와 함께 목록을 전달하는 것입니다. 유효성을 검사 할 필드와 함께. –