springboot_validation : reject(), rejectValue()

This commit is contained in:
haerong22
2021-07-16 00:51:33 +09:00
parent 4979ec4ad3
commit 51f2adeeba

View File

@@ -108,7 +108,7 @@ public class ValidationItemControllerV2 {
return "redirect:/validation/v2/items/{itemId}"; return "redirect:/validation/v2/items/{itemId}";
} }
@PostMapping("/add") // @PostMapping("/add")
public String addItemV3(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { 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 ) { if (item.getPrice() != null && item.getQuantity() != null ) {
int resultPrice = item.getPrice() * item.getQuantity(); int resultPrice = item.getPrice() * item.getQuantity();
if (resultPrice < 10000) { 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");
} }
} }