복붙노트

[SPRING] 유효성 검사 주석을 제어하려면?

SPRING

유효성 검사 주석을 제어하려면?

두 개의 유효성 검사 주석이있는 필드가 있습니다.

@NotEmpty
@Length(min=3,max=100)
String firstName;

hibernate가 유효성 검사 주석을 먼저 실행하는 순서를 지정하는 방법을 알고 궁금해하며 사용자 지정이 가능하면?

내가 묻는 이유는 그 필드를 비워두면 때때로 표시되는 첫 번째 유효성 검사 메시지가 비어 있지 않고 다른 시간에 비어있는 경우입니다. 비워두면 길이 주석에 대한 유효성 검사 메시지가 나타납니다.

미리 감사드립니다.

해결법

  1. ==============================

    1.JSR-303 유효성 검사 그룹을 사용하십시오.

    JSR-303 유효성 검사 그룹을 사용하십시오.

    그룹을 지정하지 않으면 제약 조건이 기본 Bean 유효성 검사 그룹의 일부가됩니다 (javax.validation.groups.Default 참조).

    당신의 "확장"(또는 당신이 그것을 부르기 원하는) 그룹이 될 수있는 인터페이스를 생성하십시오 :

    public interface Extended{}
    

    이제 javax.validation.GroupSequence 주석을 가질 인터페이스를 생성하십시오.

    @GroupSequence({Default.class, Extended.class})
    public interface MySequence {}
    

    제약 조건에 유효성 검사 그룹 설정

    @NotEmpty // If no group is specified it is part of the default group
    @Length(min=3,max=100, groups = Extended.class)
    String firstName;
    

    MySequence를 validator 호출에 건네줍니다.

    validator.validate(object, MySequence.class);
    

    @GroupSequence에 지정된대로 기본 제약 조건이 먼저 유효성이 검사되고 위반 위반이 발생하지 않으면 확장 그룹으로 이동합니다.

  2. from https://stackoverflow.com/questions/5571231/control-validation-annotations-order by cc-by-sa and MIT license