[ Spring ]/Spring

[Spring] Validator 등록하기 (검증 객체 생성)

쿠릉쿠릉 쾅쾅 2022. 3. 17. 16:22
728x90

 

 

📌 데이터 모델(커맨더) 객체

package com.godcoder.myhome.model;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Entity  // JPA 연동을 위한 모델 클래스를 알려주기 위한 애노테이션
@Data
public class Board {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    @Size(min=2, max=30, message = "제목은 2자이상 30자 이하입니다.")
    private String title;


    private String content;
}
  • 데이터를 담을 모델 객체 Board를 하나 생성한다.

 

 

📌 Validator 생성

package com.godcoder.myhome.validator;

import com.godcoder.myhome.model.Board;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;
import org.thymeleaf.util.StringUtils;

@Component
public class BoardValidator implements Validator {

    @Override
    public boolean supports(Class<?> clazz) {
        return Board.class.isAssignableFrom(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {
        Board board = (Board) target;
        if(StringUtils.isEmpty(board.getContent())) {
            errors.rejectValue("content", "key", "내용을 입력하세요.");
        }

    }
}
  • Validator 인터페이스를 구현해야 한다.

 

# Errors 인터페이스가 제공하는 메소드(반환 타입 void)

  • errors.reject(String errorCode)
    • 전 객체에 대한 글로벌 에러 코드를 추가
  • errors.reject(String errorCode, String defaultMessage) 
    • : 전 객체에 대한 글로벌 에러코드를 추가하고, 에러코드에 대한 메세지가 존재하지 않을 경우 defaultMessage를 사용
  • errors.reject(String errorCode, Object[] errorArgs, String defaultMessage) 
    • 전 객체에 대한 글로벌 에러코드를 추가, 메세지 인자로 errorArgs를 전달, 에러코드에 대한 메세지가 존재하지 않을 경우 defaultMessage를 사용  
  • erros.rejectValue(String field, String errorCode)
    • 필드에 대한 에러코드를 추가
  • errors.rejectValue(String field, String errorCode, String defaultMessage) 
    • 필드에 대한 에러코드를 추가 에러코드에 대한 메세지가 존재하지 않을 경우 defaultMessage를 사용
  • errors.rejectValue(String field, String errorCode, Object[] errorArgs, String defaultMessage)
    •  필드에 대한 에러코드를 추가, 메세지 인자로 errorArgs를 전달, 에러코드에 대한 메세지가 존재하지 않을 경우 defaultMessage사용

 

 

📌 컨트롤러

@Autowired
private BoardValidator boardValidator;

@PostMapping("/form")
public String add(@Validated @ModelAttribute Board board,
                  BindingResult bindingResult) {

    boardValidator.validate(board, bindingResult);

    if(bindingResult.hasErrors()) {
        return "board/form";
    }

    boardRepository.save(board);
    return "redirect:/board/list";
}

 

 

 

 

https://bbiyakbbiyak.tistory.com/3

 

Spring form 유효성 검사 (Spring Validator)

 # Validator : org.springframework.validation.Validator 인터페이스  ** 구현 메소드   - boolean supports(Class<?> arg0)       : Validator가 해당클래스에 대한 값 검증을 지원하는지에 대한 여부..

bbiyakbbiyak.tistory.com

 

728x90