목록전체 글 (796)
코드 그라데이션
오류 코드와 메시지 처리 (1) 목표 오류 메시지를 체계적으로 다루어보기. FieldError 생성자 FieldError 는 두 가지 생성자를 제공한다. FieldError , ObjectError 의 생성자는 codes , arguments 를 제공한다. 이것은 오류 발생시 오류 코드로 메시지를 찾기 위해 사용된다. errors 메시지 파일 생성 messages.properties 를 사용해도 되지만, 오류 메시지를 구분하기 쉽게 errors.properties 라는 별도의 파일로 관리해보자. * 먼저 스프링 부트가 해당 메시지 파일을 인식할 수 있게 다음 설정을 추가한다. 이렇게 하면 messages.properties , errors.properties 두 파일을 모두 인식한다. (생략하면 mess..
FieldError, ObjectError 목표 사용자 입력 오류 메시지가 화면에 남도록 하자. 예) 가격을 1000원 미만으로 설정시 입력한 값이 남아있어야 한다. FieldError , ObjectError 에 대해서 더 자세히 알아본다. ValidationItemControllerV2 - addItemV2 새 메서드 구현 (기존 V1은 주석처리) 실행해서 에러를 내보면 빨간색 오류메시지가 나와도 내용이 그대로 유지되고 있음을 확인할 수 있다. 하나씩 살펴보기 1. 필드 검증 2. 전체 예외 # FieldError의 두 가지 생성자 # ObjectError 도 두 가지 생성자 # 오류 발생시 사용자 입력 값 유지 new FieldError("item", "price", item.getPrice(), ..
BindingResult 두 번째 스프링이 제공하는 검증 오류를 보관하는 객체이다. 검증 오류가 발생하면 여기에 보관하면 된다. BindingResult 가 있으면 @ModelAttribute 에 데이터 바인딩 시 오류가 발생해도 컨트롤러가 호출된다! ~~~~~ errors=org.springframework.validation.BeanPropertyBindingResult: 2 errors Field error in object 'item' on field 'price': rejected value [yyyy]; codes [typeMismatch.item.price,typeMismatch.price,typeMismatch.java.lang.Integer,typeMismatch]; arguments [..
BindingResult 첫 번째 지금부터 스프링이 제공하는 검증 오류 처리 방법을 알아본다. 여기서 핵심은 BindingResult이다. BindingResult가 errors의 역할을 해 줄 것이다. addItem 변경 // 메서드명 변경 @PostMapping("/add") public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes) { // 검증 로직 if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", "상품 이..
프로젝트 준비 V2 앞서 만든 기능을 유지하기 위해, 컨트롤러와 템플릿 파일을 복사 ValidationItemControllerV2 컨트롤러 생성 우선 package hello.itemservice.web.validation; import hello.itemservice.domain.item.Item; import hello.itemservice.domain.item.ItemRepository; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.spri..
검증 직접 처리 - 소개 상품 저장 성공 사용자가 상품 등록 폼에서 정상 범위의 데이터를 입력하면, 서버에서는 검증 로직이 통과하고, 상품을 저장하고, 상품 상세 화면으로 redirect한다. 상품 저장 검증 실패 고객이 상품 등록 폼에서 상품명을 입력하지 않거나, 가격, 수량 등이 너무 작거나 커서 검증 범위를 넘어서면, 서버 검증 로직이 실패해야 한다. 이렇게 검증에 실패한 경우 고객에게 다시 상품 등록 폼을 보여주고, 어떤 값을 잘못 입력했는지 친절하게 알려주어야 한다. 개발 시작 ValidationItemControllerV1 - addItem() 수정 // 실제 저장하는 곳 @PostMapping("/add") public String addItem(@ModelAttribute Item item..