기획자가 화면에 표시되는 문구가 맘에 들지 않아 상품명 -> 상품이름 변경 요청을 한다면?여러 화면에 보이는 상품명,가격,수량 등 lable에 있는 단어를 변경하려면 다음 화면들을 다 찾아가면서 모두 변경 해야 한다.화면 수가 적으면 문제가 되지 않지만 화면이 수십개
메세지에서 한 발 더 나가보자메세지에서 설명한 메세지 파일(messages.properties)을 각 나라별로 별도로 관리하면 서비스를 국제화 할 수 있다.예를 들어서 다음과 같이 2개의 파일을 만들어서 분류한다.messages_en.propertiesmessages_
상품 관리 시스템에 새로운 요구사항이 추가되었다.타입 검증가격, 수량에 문자가 들어가면 검증 오류 처리필드 검증상품명: 필수, 공백X가격: 1000원 이상, 1백만원 이하수량: 최대 9999특정 필드의 범위를 넘어서는 검증가격 \* 수량의 합은 10,000원 이상폼 입
핵심은 BindingResult이다.📍 주의 : BindingResult bindingResult 파라미터의 위치는 @ModelAttribute Item item 다음에 와야 한다.필드에 오류가 있으면 FieldError 객체를 생성해서 bindingResult 에
스프링이 제공하는 검증 오류를 보관하는 객체이다. 검증 오류가 발생하면 여기에 보관하면 된다.BindingResult가 있으면 @ModelAttribute에 데이터 바인딩 시 오류가 발생해도 컨트롤러가 호출 된다.ex) @ModelAttribute에 바인딩 시 타입 오
오류 메세지를 체계적으로 다루어보자FieldError 생성자FieldError는 두 가지 생성자를 제공한다.파라미터 목록objectName : 오류가 발생한 객체 이름field : 오류 필드rejectedValue : 사용자가 입력한 값(거절된 값)bindingFail
목표FieldError, ObjectError는 다루기 너무 번거롭다.오류 코드도 좀 더 자동화 할 수 있지 않을까? ex) item.itemName 처럼?컨트롤러에서 BindingResult는 검증해야 할 객체인 target바로 다음에 온다.따라서 BindingRes
오류 코드를 만들 때 다음과 같이 자세히 만들 수도 있고,required.item.itemName: 상품 이름은 필수 입니다.range.item.price: 상품의 가격 범위 오류 입니다.또는 다음과 같이 단순하게 만들 수도 있다.required: 필수 값 입니다.ra
우선 테스트 코드로 MessageCodesResolver를 알아보자.검증 오류 코드로 메세지 코드들을 생성한다MessageCodesResolver 인터페이스이고 DefaultMessageCodesResolver는 기본 구현체 이다.주로 다음과 함께 사용ObjectErr
핵심은 구체적인 것에서! 덜 구체적인 것으로!MessageCodesResolver는 required.item.itemName처럼 구체적인 것을 먼저 만들어주고, required처럼 덜 구체적인 것을 가장 나중에 만든다.이렇게 하면 앞서 말한 것 처럼 메세지와 관련된 공
검증 오류 코드는 다음과 같이 2가지로 나눌 수 있다.개발자가 직접 설명한 오류 코드 -> rejectValue()를 직접 호출스프링이 직접 검증 오류에 추가한 경우 (주로 타입 정보가 맞지 않음)price 필드에 문자 "A"를 입력해보자.로그를 확인해보면 Bindin