From 51f2adeebab92bf8402f44ba410404fea4d3def0 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Fri, 16 Jul 2021 00:51:33 +0900 Subject: [PATCH] springboot_validation : reject(), rejectValue() --- .../ValidationItemControllerV2.java | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/springboot_validation/src/main/java/hello/itemservice/web/validation/ValidationItemControllerV2.java b/springboot_validation/src/main/java/hello/itemservice/web/validation/ValidationItemControllerV2.java index 463be587..84803da4 100644 --- a/springboot_validation/src/main/java/hello/itemservice/web/validation/ValidationItemControllerV2.java +++ b/springboot_validation/src/main/java/hello/itemservice/web/validation/ValidationItemControllerV2.java @@ -108,7 +108,7 @@ public class ValidationItemControllerV2 { return "redirect:/validation/v2/items/{itemId}"; } - @PostMapping("/add") +// @PostMapping("/add") public String addItemV3(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { // 검증 로직 @@ -124,7 +124,39 @@ public class ValidationItemControllerV2 { if (item.getPrice() != null && item.getQuantity() != null ) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { - bindingResult.addError(new ObjectError("item", new String[]{"totalPriceMin"}, new Object[]{10000, resultPrice}, null; + bindingResult.addError(new ObjectError("item", new String[]{"totalPriceMin"}, new Object[]{10000, resultPrice}, null)); + } + } + + // 검증 실패시 + 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}"; + } + + @PostMapping("/add") + public String addItemV4(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { + + // 검증 로직 + if (!StringUtils.hasText(item.getItemName())) { + bindingResult.rejectValue("itemName", "required"); + } + if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000) { + bindingResult.rejectValue("price", "range", new Object[]{1000, 1000000}, null); + } + if (item.getQuantity() == null || item.getQuantity() >= 9999) { + bindingResult.rejectValue("quantity", "max", new Object[]{9999}, null); + } + if (item.getPrice() != null && item.getQuantity() != null ) { + int resultPrice = item.getPrice() * item.getQuantity(); + if (resultPrice < 10000) { + bindingResult.reject("totalPriceMin"); } }