Spring
스프링 MVC 2 - 오류 코드와 메시지 처리3
스프링 MVC 2 - 오류 코드와 메시지 처리3
2022.08.30오류 코드와 메시지 처리3 오류 코드를 만들 때 다음과 같이 자세히 만들 수도 있고, required.item.itemName : 상품 이름은 필수 입니다. range.item.price : 상품의 가격 범위 오류 입니다. 또는 다음과 같이 단순하게 만들 수도 있다. required: 필수 값 입니다. range: 범위 오류 입니다. 단순하게 만들면 범용성이 좋아서 여러곳에서 사용할 수 있지만, 메시지를 세밀하게 작성하기 어렵다. 반대로 너무 자세하게 만들면 범용성이 떨어진다. 가장 좋은 방법은 범용성으로 사용하다가, 세밀하게 작성해야 하는 경우에는 세밀한 내용이 적용되도록 메시지에 단계를 두는 방법이다. 예를 들어서 required라고 오류 코드를 사용한다고 가정해보자. 다음과 같이 required라는..
스프링 MVC 2 - 오류 코드와 메시지 처리2
스프링 MVC 2 - 오류 코드와 메시지 처리2
2022.08.29오류 코드와 메시지 처리2 목표 FieldError, ObjectError는 다루기 너무 번거롭다. 오류 코드도 좀 더 자동화 할 수 있지 않을까? 예) item.itemName 처럼? 컨트롤러에서 BindingResult는 검증해야 할 객체인 target 바로 다음에 온다. 따라서 BindingResult는 이미 본인이 검증해야 할 객체인 target을 알고 있다. 다음을 컨트롤러에서 실행해보자. log.info("objectName={}", bindingResult.getObjectName()); log.info("target={}", bindingResult.getTarget()); 출력 결과 rejectValue(), reject() BindingResult가 제공하는 rejectValue(), ..
스프링 MVC 2 - 오류 코드와 메시지 처리1
스프링 MVC 2 - 오류 코드와 메시지 처리1
2022.08.29오류 코드와 메시지 처리1 목표 오류 메시지를 체계적으로 다루어보자. FieldError 생성자 FieldError는 두 가지 생성자를 제공한다. public FieldError(String objectName, String field, String defaultMessage); public FieldError(String objectName, String field, @Nullable Object rejectedValue, boolean bindingFailure, @Nullable String[] codes, @Nullable Object[] arguments, @Nullable String defaultMessage) 파라미터 목록 objectName: 오류가 발생한 객체 이름 field: 오류 필..
스프링 MVC 2 - FieldError, ObjectError
스프링 MVC 2 - FieldError, ObjectError
2022.08.26FieldError, ObjectError 목표 사용자 입력 오류 메시지가 화면에 남도록 하자. 예) 가격을 1000원 미만으로 설정시 입력한 값이 남아있어야 한다. FieldError, ObjectError에 대해서 더 자세히 알아보자. ValidationItemControllerV2 - addItemV2 코드 변경 addItemV1() 의 @PostMapping("/add")을 주석 처리하자. FieldError 생성자 FieldError는 두 가지 생성자를 제공한다. public FieldError(String objectName, String field, String defaultMessage); public FieldError(String objectName, String field, @Null..
스프링 MVC 2 - BindingResult2
스프링 MVC 2 - BindingResult2
2022.08.25BindingResult2 스프링이 제공하는 검증 오류를 보관하는 객체이다. 검증 오류가 발생하면 여기에 보관하면 된다. BindingResult가 있으면 @ModelAttribute에 데이터 바인딩 시 오류가 발생해도 컨트롤러가 호출된다! 예) @ModelAttribute에 바인딩 시 타입 오류가 발생하면? BindingResult가 없으면 → 400 오류가 발생하면서 컨트롤러가 호출되지 않고, 오류 페이지로 이동한다. BindingResult가 있으면 → 오류 정보(FieldError)를 BindingResult에 담아서 컨트롤러를 정상 호출한다. BindingResult에 검증 오류를 적용하는 3가지 방법 @ModelAttribute의 객체에 타입 오류 등으로 바인딩이 실패하는 경우 스프링이 Fie..
스프링 MVC 2 - BindingResult1
스프링 MVC 2 - BindingResult1
2022.08.23BindingResult1 지금부터 스프링이 제공하는 검증 오류 처리 방법을 알아보자. 여기서 핵심은 BindingResult이다. 우선 코드로 확인해보자. ValidationItemControllerV2 - addItemV1 코드 변경 메서드 이름 변경: addItem() → addItemV1() @Slf4j: 로그 출력을 위해 추가 주의 BindingResult bindingResult 파라미터의 위치는 @ModelAttribute Item item 다음에 와야 한다. 필드 오류 - FieldError FieldError 생성자 요약 필드에 오류가 있으면 FieldError 객체를 생성해서 bindingResult에 담아두면 된다. objectName : @ModelAttribute 이름 field ..