validator 예제

bean 속성을 문자열 값으로 설정할 때 Spring IoC 컨테이너는 궁극적으로 표준 JavaBeans PropertyEditors를 사용하여 이러한 문자열을 속성의 복잡한 유형으로 변환합니다. Spring은 여러 사용자 지정 PropertyEditors를 미리 등록합니다(예: 문자열로 표현된 클래스 이름을 실제 클래스 개체로 변환). 또한 Java의 표준 JavaBeans PropertyEditor 조회 메커니즘을 사용하면 클래스에 대한 PropertyEditor를 단순히 적절하게 이름을 지정하고 지원을 제공하는 클래스와 동일한 패키지에 배치하여 자동으로 찾을 수 있습니다. 경우에 따라 특정 조건이 true인 경우에만 변환기를 실행하려고 합니다. 예를 들어 대상 필드에 특정 추가가 있는 경우에만 변환기를 실행할 수 있습니다. 또는 static valueOf 메서드와 같은 특정 메서드가 대상 클래스에 정의된 경우에만 변환기를 실행할 수 있습니다. 조건생 변환기는 이러한 사용자 지정 일치 기준을 정의할 수 있는 제네릭 컨버터의 하위 인터페이스입니다. 스프링 MVC 유효성 검사에 관한 두 가지 질문이 있습니다. 유효성 검사를 위해 컨트롤러 메서드에서 명시적으로 호출할 필요가 없도록 @IntBinder 개의 추가 된 메서드를 사용하여 단일 명령 개체에 대해 둘 이상의 유효성 검사기를 등록하는 방법을 알고 싶습니다. 내 두 번째 질문은 @NotBlank 같은 JSR 303 유효성 검사 주석을 사용하고 자하는 것입니다 뿐만 아니라 예를 들어 @Phone (이 예제에서 보여 준) 내 자신의 사용자 정의 유효성 검사 주석하지만이 두 유효성 검사는 주석이 다른 다음 어떻게 사용할 수 있습니다 다른 하나를 잃고없이 그들? @Valid @Validated 사용하여 컨트롤러의 요청 처리 방법의 인수를 명령하거나 다른 방법이 있습니다.

응답 스프링을 원하는 java.beans.PropertyEditorManager 필요할 수 있는 속성 편집기의 검색 경로를 설정 합니다. 검색 경로에는 font, Color 및 대부분의 기본 형식과 같은 형식에 대한 PropertyEditor 구현이 포함된 sun.bean.editors도 포함됩니다. 또한 표준 JavaBeans 인프라는 해당 클래스가 처리하는 클래스와 동일한 패키지에 있고 `편집기`를 사용하여 해당 클래스와 동일한 이름을 가진 경우 PropertyEditor 클래스를 자동으로 검색합니다(명시적으로 등록할 필요 없이). 추가된; 예를 들어 FooEditor 클래스를 인식 하 고 Foo 형식 속성에 대 한 PropertyEditor로 사용 하기에 충분 한 다음 클래스 및 패키지 구조를 가질 수 있습니다. 아래에서 BeanWrapper로 작업하여 속성을 얻고 설정하는 몇 가지 예를 찾을 수 있습니다. 최대 절전 모드 유효성 검사기는 유효성 검사 API의 참조 구현입니다. 여기서는 사용자 빈을 주요 예로 사용하고 몇 가지 간단한 유효성 검사를 추가하는 작업을 수행합니다: Spring MVC Framework는 기본적으로 JSR-303 사양을 지원하며 JSR-303을 추가하는 것만 있으면 Spring MVC 응용 프로그램에서 구현 종속성을 사용합니다. Spring은 또한 @Validator 개의 어구와 BindingResult 클래스를 제공하여 컨트롤러 요청 처리기 메서드에서 Validator 구현에 의해 발생하는 오류를 얻을 수 있습니다.

마지막으로 제약 조건을 클래스 수준에 배치할 수도 있습니다. 제약 조건 별 추가가 이 수준에 배치되면 클래스 인스턴스 자체가 ConstraintValidator에 전달됩니다. 클래스 수준 제약 조건은 유효성을 검사하기 위해 클래스의 두 개 이상의 속성을 검사해야 하거나 서로 다른 상태 변수 간의 상관 관계를 평가해야 하는 경우에 유용합니다. 예제 2.3에서 “클래스 등급 제약 조건”에서는 클래스 자동차에 속성 승객을 추가합니다. 또한 클래스 레벨에 제약 승객 카운트를 추가합니다. 나중에 이 사용자 지정 제약 조건을 실제로 만드는 방법을 살펴보겠습니다(3장, 사용자 지정 제약 조건 만들기 참조). 현재로서는 PassengerCount가 좌석보다 더 많은 승객이 차에 탑승할 수 없다는 것을 알기에 충분합니다.

Comments are closed.