<aside> 📖 Validation

</aside>

정리

  1. Map 에 검증 오류 정보를 담아 뷰로 리턴 → 타입 검증 불가 등 여러 문제점 발생
  2. 스프링이 제공하는 BindingResultFieldError , ObjectError 생성하여 오류 정보 담아 리턴
  3. FieldErrorObjectError 의 생성자 대신 rejectValues(), reject() 사용하여 검증 오류 처리
  4. 메시지 내용을 errors.properties 메시지 파일로 별도 관리
  5. Validator 인터페이스 구현하여 검증 로직 별도 분리

⇒ 최종 코드 정리

@InitBinder
public void init(WebDataBinder dataBinder) {
		dataBinder.addValidators(itemValidator);
}

@PostMapping("/add")
public String addItemV6(@Validated @ModelAttribute Item item
											, BindingResult bindingResult
											, RedirectAttributes redirectAttributes) {
		if (bindingResult.hasErrors()) {
				return "validation/v2/addForm";
		}

		//성공 로직
		Item savedItem = itemRepository.save(item);
		redirectAttributes.addAttribute("itemId", savedItem.getId());
		redirectAttributes.addAttribute("status", true);
		return "redirect:/validation/v2/items/{itemId}";
}

검증 방식

검증 직접 처리