일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- StringUtils.hasText
- 명령어
- 프로젝트 클린
- JSON
- 하모니카 OS 5
- 함수 인자값 id
- linux
- Test 룸북 사용하기
- 자바스크립트 인라인
- cmd
- #{..}
- Java
- 스프링부트
- 다른사람 프로젝트 수정전 가져야할 자세
- 룸북
- js
- 리눅스
- 타임리프
- BindingResult
- 시퀀스 조회
- 개발시작전 자세
- Intellij
- 추천 사이트
- 순서 보장
- 비밀번호 변경 명령어
- 추천 프로그램
- select
- it
- 타임리프와 스프링
- 설정
- Today
- Total
웹개발 블로그
[Spring] BindingResult(검증처리) 본문
스프링이 제공하는 메커니즘(체제) 중 하나 BindingResult
#사용법
1. 파라미터에 BindingResult 객체명 추가.
2. 에러가 날 시에 저장할 부분에
( bindingResult.addError(new FieldError("vo객체명","필드명","에러메시지 작성"));)
3. 글로벌 에러인 경우
( bindingResult.addError(new ObjectError("vo객체명","에러메시지 작성"));)
4. 에러가 있다면?
( bindingResult.hasErrors() )
#살펴보기
오류가 없다면 Model 값을 가져오며
오류가 있다면 BindingResult 안에서 값을 가져온다.
FeildError 생성자
public FieldError(String objectName, String field, String defaultMessage) {..}
- 필드에 오류가 있다면 FieldError 객체를 생성해서 BindingResult객체에 담아두면 된다.
순서1 objectName : @ModelAttribute 이름
순서2 field : 오류가 발생한 필드 이름
순서3 defaultMessage : 오류 기본 메시지
ObjectError 생성자
public ObjectError(String objectName, String defaultMessage) {..}
- 특정 필드를 넘어서는 오류가 있으면 ObjectError객체를 생성해서 bindingResult에 담아두면 된다.
(특정 필드가 아닌 해당 객체 자체에 문제가 있을 시 사용하는 값)
순서1 objectName : @ModelAttribute 이름
순서2 defaultMessage : 오류 기본 메시지
적용 사례 🔽
public String addItemBinding(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model){
//검증 로직
//FieldError
if(!StringUtils.hasText(item.getItemName())){
bindingResult.addError(new FieldError("item","itemName","상품이름은 필수 입니다."));
}
if(item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000){
bindingResult.addError(new FieldError("item","price","각격은 1,000 ~ 1,000,000 까지 허용합니다."));
}
if(item.getQuantity() == null || item.getQuantity() >= 9999){
bindingResult.addError(new FieldError("item","quantity", "수량은 최대 9,999 까지 허용합니다."));
}
//특정 필드가 아닌 복합 룰 검증(글로벌 에러)
//ObjectError
if(item.getPrice() != null && item.getQuantity() != null){
int resultPrice = item.getPrice() * item.getQuantity();
if(resultPrice < 10000){
bindingResult.addError(new ObjectError("item","가격*수량의 합은 10,000원 이상이어야 합니다. 현재 값 = "+resultPrice));
}
}
//검증에 실패하면 다시 입력 폼으로
if(bindingResult.hasErrors()) {//bindingResult에 error가 있다면
log.info("errors={} ", bindingResult);
return "validation/v2/addForm";
}
//성공 로직
Item savedItem = itemRepository.save(item);
redirectAttributes.addAttribute("itemId", savedItem.getId());
redirectAttributes.addAttribute("status", true);
return "redirect:/validation/v2/items/{itemId}";
}
'◆SPRING > 검증' 카테고리의 다른 글
[검증] 클라이언트 검증, 서버 검증 (0) | 2023.02.09 |
---|