Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Exception
- spring
- Servlet
- JPQL
- transaction
- 스프링 핵심 원리
- 그리디
- SpringBoot
- Greedy
- kotlin
- 백준
- 스프링
- Android
- jpa
- Thymeleaf
- http
- 스프링 핵심 기능
- pointcut
- 자바
- AOP
- JDBC
- springdatajpa
- java
- db
- Proxy
- 알고리즘
- 인프런
- Spring Boot
- QueryDSL
- 김영한
Archives
- Today
- Total
개발자되기 프로젝트
오류 코드와 메시지 처리 2 본문
- 컨트롤러에서 BindingResult 는 검증해야 할 객체인 target 바로 다음에 온다.
- 따라서 BindingResult 는 이미 본인이 검증해야 할 객체인 target 을 알고 있다.
@PostMapping("/add")
public String addItemV3(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) {
log.info("objectName = {}", bindingResult.getObjectName());
log.info("target = {}", bindingResult.getTarget());
2021-09-24 20:19:16.482 INFO 21476 --- [io-8080-exec-10] h.i.w.v.ValidationItemControllerV2
: objectName = item
2021-09-24 20:19:16.483 INFO 21476 --- [io-8080-exec-10] h.i.w.v.ValidationItemControllerV2
: target = Item(id=null, itemName=123, price=222, quantity=111)
1. rejectValue(), reject()
- BindingResult 가 제공하는 rejectValue() , reject() 를 사용하면
- FieldError , ObjectError 를 직접 생성하지 않고, 깔끔하게 검증 오류를 다룰 수 있다.
2. rejectValue()
void rejectValue(@Nullable String field, String errorCode,
@Nullable Object[] errorArgs, @Nullable String defaultMessage);
- field : 오류 필드명
- errorCode : 오류 코드, 이 오류 코드는 메시지에 등록된 코드가 아니다. 좀 다름.
- messageResolver를 위한 오류 코드이다.)
- errorArgs : 오류 메시지에서 {0} 을 치환하기 위한 값
- defaultMessage : 오류 메시지를 찾을 수 없을 때 사용하는 기본 메시지
- 사용 예시
-
bindingResult.rejectValue("price", "range", new Object[]{1000, 10000}, null);
-
- 앞에서 BindingResult 는 어떤 객체를 대상으로 검증하는지 target을 이미 알고 있음.
- 따라서 target(item)에 대한 정보는 없어도 된다.
- 오류 필드명은 동일하게 price 를 사용했다.
3. 축약된 오류 코드
- FieldError() 를 직접 다룰 때는 오류 코드를 range.item.price 와 같이 모두 입력했다.
- 그런데 rejectValue() 를 사용하고 부터는 오류 코드를 range 로 간단하게 입력했다.
- 그래도 오류 메시지를 잘 찾아서 출력한다. 무언가 규칙이 있는 것 처럼 보인다.
- 이 부분을 이해하려면 MessageCodesResolver 를 이해해야 한다.
4. GitHub : 210924 BindingResult, Message
'인프런 > [인프런] 스프링 MVC 2' 카테고리의 다른 글
오류코드와 메시지 처리4, MessageCodesResolver (0) | 2021.09.24 |
---|---|
오류 코드와 메시지 처리3 (0) | 2021.09.24 |
오류 코드와 메시지 처리1 (0) | 2021.09.24 |
FieldError, ObjectError (0) | 2021.09.24 |
BindingResult2 (0) | 2021.09.24 |
Comments