320x100
반응형
에러 검증
Bean Validation
이전에 사용했던 Validator
를 상속받아 사용했던 특정 검증기와는 다르게 검증 어노테이션을 이용하여 검증을 하는 방식이다
설정
xml 설정방법
스프링 관련 설정 :
@EnableWebMvc
어노테이션을 사용하면OptionalValidatorFactoryBean
을 글로벌 validator로 등록dependency 설정: maven
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>7.0.2.Final</version> </dependency>
dependency 설정: gradle
implementation 'javax.validation:validation-api:2.0.1.Final'
종류
어노테이션 | 설명 |
---|---|
@NotNull | 값이 null 이면 안됨 |
@NotBlank, @NotEmpty | 값이 null 이면 안됨, 빈칸이라도 있어야 함 |
@Range | 범위 지정 min~max |
@Length | 문자열 길이 검사 min~max |
@Min, @Max | 최대값 최소값 |
@Pattern | 정규표현식 유효한지 검사 |
Object오류는 @ScriptAssert
를 사용해서 검증을 할 수 있지만 제약사항이 많아 직접 자바 코드로 작성을 하여 검증을 하는 것 이 좋다
추가
날짜 타입 format하기 위해서 @DateTimeFormat
을 사용하면 된다
에러코드
- @NotBlank
- 어노테이션명.객체명.필드명
- 어노테이션명.필드명
- 어노테이션명.필드타입
- 어노테이션명
Groups
만일 여러개의 컨트롤러에서 하나의 객체를 가지고 다르게 검증을 하기를 원한다면 groups
속성을 사용을 하면된다
groups는 아무것도 없는 interface를 생성을 해서@NotNull(groups = {UpdateCheck.class, SaveCheck.class})
와 같이 선언을 해주면 된다
하지만 하나의 객체에서 복잡하기도 하고 코드도 지저분 하기 때문에 차라리 전송객체를 따로 만들어서(updateFrom용, saveForm용) 사용을 하는 것이 좋아보인다
참고
인프런_스프링 MVC 2편 - 백엔드 웹개발 핵심 기술_김영한 님 강의
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-2/dashboard
320x100
반응형
'공부기록 > Spring' 카테고리의 다른 글
Spring-filter interceptor (0) | 2022.02.03 |
---|---|
Spring - 로그인 처리 세션쿠키 (0) | 2022.01.28 |
Spring MVC3 - Error검증 (0) | 2022.01.17 |
Spring MVC2 (0) | 2022.01.07 |
Spring MVC1 (0) | 2021.12.31 |