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
728x90
'[ Spring ] > Spring' 카테고리의 다른 글
[Spring] JUnit (0) | 2022.02.14 |
---|---|
[Spring] HttpServletRequest 객체 (0) | 2022.02.06 |
[Spring] 빈(Bean) 스코프(scope) (0) | 2022.01.31 |
[Spring] 빈(Bean) 생명주기 콜백 시작 (0) | 2022.01.29 |
[Spring] 조회한 빈(Bean)을 List, Map에 담기 (0) | 2022.01.24 |