springboot_validation : v2 - BindingResult & #fields + input value

This commit is contained in:
haerong22
2021-07-14 23:08:31 +09:00
parent fa59aeedc1
commit 70673e29e3

View File

@@ -43,7 +43,7 @@ public class ValidationItemControllerV2 {
return "validation/v2/addForm"; return "validation/v2/addForm";
} }
@PostMapping("/add") // @PostMapping("/add")
public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { public String addItemV1(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) {
// 검증 로직 // 검증 로직
@@ -76,6 +76,38 @@ public class ValidationItemControllerV2 {
return "redirect:/validation/v2/items/{itemId}"; return "redirect:/validation/v2/items/{itemId}";
} }
@PostMapping("/add")
public String addItemV2(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) {
// 검증 로직
if (!StringUtils.hasText(item.getItemName())) {
bindingResult.addError(new FieldError("item", "itemName", item.getItemName(), false, null, null, "상품 이름은 필수 입니다."));
}
if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) {
bindingResult.addError(new FieldError("item", "price", item.getPrice(), false, null, null, "가격은 1,000 ~ 1,000,000 까지 허용합니다."));
}
if (item.getQuantity() == null || item.getQuantity() >= 9999) {
bindingResult.addError(new FieldError("item", "quantity", item.getQuantity(), false, null, null, "수량은 최대 9,999 까지 허용됩니다."));
}
if (item.getPrice() != null && item.getQuantity() != null ) {
int resultPrice = item.getPrice() * item.getQuantity();
if (resultPrice < 10000) {
bindingResult.addError(new ObjectError("item", null, null,"가격 * 수량의 합은 10,000원 이상 이어야 합니다. 현재 값 = " + resultPrice));
}
}
// 검증 실패시
if (bindingResult.hasErrors()) {
return "validation/v2/addForm";
}
// 검증 성공시
Item savedItem = itemRepository.save(item);
redirectAttributes.addAttribute("itemId", savedItem.getId());
redirectAttributes.addAttribute("status", true);
return "redirect:/validation/v2/items/{itemId}";
}
@GetMapping("/{itemId}/edit") @GetMapping("/{itemId}/edit")
public String editForm(@PathVariable Long itemId, Model model) { public String editForm(@PathVariable Long itemId, Model model) {
Item item = itemRepository.findById(itemId); Item item = itemRepository.findById(itemId);