이야기앱 세상

스프링 - @Valid Annotation을 이용한 유효성 체크 본문

IT/Spring

스프링 - @Valid Annotation을 이용한 유효성 체크

storya 2016. 3. 25. 09:46

@Valid Annotation을 이용한 유효성 체크


@Valid 어노테이션을 이용해서 유효성 체크를 하고자 할 때는 우선 Maven 설정 pom.xml에 아래와 같이 dependency를 
추가한다.

1. dependency 추가

<dependency>
        <groupId>javax.validation</groupId> 
        <artifactId>validation-api</artifactId> 
        <version>1.0.0.GA</version> 
</dependency>

2. 도메인 클래스에서 유효성 검증을 위한 어노테이션 추가

public class Member{
   //message 항목이 없으면 영문 기본 문구가 보여짐
   @NotNull
   private String id;
   @Size(min="3",max="5",message="3자이상 5자미만으로 작성해야 합니다.")
   private String password;
}

<데이터 검증을 위한 기본제공 Annotation>
어노테이션 설명
@AssertFalse  거짓인지?
@AssertTrue 참인지?
@DecimalMax 지정 값 이하의 실수인지?
@DecimalMin 지정 값 이상의 실수인지?
@Digits(integer=,fraction=) 정수 여부
@Future 미래 날짜인지?
@Max 지정 값 이상인지?
@Min 지정 값 이하인지?
@NotNull  Null이 아닌지?
@Null Null인지?
@Pattern(regex=,flag=) 정규식을 만족하는지?
@Past   과거날짜인지?
@Size(min=,max=)  문자열 또는 배열등의 길이 만족 여부  


3. Controller에서 @Valid 호출

@RequestMapping(value="/write.do",method=RequestMethod.POST)
public String write(@Valid Member member,BindingResult result){

  //유효성 체크 결과 전송된 데이터가 도메인 클래스에 지정한 검증 규칙에 어긋날 경우 폼으로
  //돌려 보냄
   if(result.hasErrors()){
      return "writeForm"
   }
   ....
   return "writePro";
}

4. view에서 메시지 표시하기

커스텀 태그 사용을 위해서 삽입
<%@ prefix="form" taglib uri="http://www.springframework.org/tags/form"%>

메시지 표시
<form:input path="name">
<form:errors path="name" />

5. 메시지 작성
유효성 체크 이후 폼에서 읽어 들일 메시지가 표시된 properties 파일을 작성

Size.command.password = 4자 이상 10자 이하로 작성하세요!

 6. 설정파일(dispatcher-servlet.xml)에 설정 추가

<mvc:annotation-driven />

------------------------------------------------
하이버네이트를 이용한 유효성 체크
위에 명시한 @Valid를 이용해서 기본적인 유효성 체크를 도메인 클래스 단위로 수행할 수 있는데 그 때
사용하는 어노테이션을 하이버네이트에서 제공하는 어노테이션으로 확장할 수 있다.

1. dependency 추가

<dependency>  
        <groupId>org.hibernate</groupId>  
        <artifactId>hibernate-validator</artifactId>  
        <version>4.2.0.Final</version>
</dependency>

2. 도메인 클래스에서 유효성 검증을 위한 어노테이션 추가

<데이터 검증을 위한 기본제공 Annotation>
어노테이션 설명
@Email      email 형식에 맞는지?
@Length(min=,max=) 문자열 길이가 최소~최대 인지?
@NotEmpty empty가 아닌지?
@Range(min=,max=) 숫자범위
@URL  url 형식에 맞는지?

3. 메시지 작성
유효성 체크 이후 폼에서 읽어 들일 메시지가 표시된 properties 파일을 작성

NotEmpty.command.id = 아이디는 필수입니다!


반응형
Comments