250x250
jhs0129
프로그래밍
jhs0129
전체 방문자
오늘
어제
  • 분류 전체보기
    • 자격증
      • SQLD
      • 정보처리기사
    • 프로젝트
      • html csss js - todolist
      • JSP 방명록
      • 졸업작품
    • 공부기록
      • Java
      • Spring
      • Spring Security
      • Algorithm
      • JPA
      • DB
      • Servlet JSP
      • html
      • 기술공유
    • 잡다한 생각

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JPA
  • 프로젝트
  • Spring Security Login
  • EC2
  • spring
  • 스프링
  • spring boot
  • oAuth2
  • spring data jpa
  • 스프링 프레임워크
  • rest docs
  • cicd
  • Spring Security
  • AWS
  • codedeploy
  • NHN Cloud
  • 스프링시큐리티
  • spring framework
  • github
  • nhn cloud 강의

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
jhs0129

프로그래밍

공부기록/Spring

Spring-MVC4 에러검증2

2022. 1. 22. 20:20
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'

      참고
      https://mvnrepository.com/

종류

어노테이션 설명
@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
    '공부기록/Spring' 카테고리의 다른 글
    • Spring-filter interceptor
    • Spring - 로그인 처리 세션쿠키
    • Spring MVC3 - Error검증
    • Spring MVC2
    jhs0129
    jhs0129
    공부기록 남기기

    티스토리툴바