springboot_validation : @InitBinder
This commit is contained in:
@@ -1,13 +1,21 @@
|
|||||||
package hello.itemservice;
|
package hello.itemservice;
|
||||||
|
|
||||||
|
import hello.itemservice.web.validation.ItemValidator;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||||
|
import org.springframework.validation.Validator;
|
||||||
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
public class ItemServiceApplication {
|
public class ItemServiceApplication { // implements WebMvcConfigurer
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
SpringApplication.run(ItemServiceApplication.class, args);
|
SpringApplication.run(ItemServiceApplication.class, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// global 설정
|
||||||
|
// @Override
|
||||||
|
// public Validator getValidator() {
|
||||||
|
// return new ItemValidator();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ import org.springframework.validation.BindingResult;
|
|||||||
import org.springframework.validation.FieldError;
|
import org.springframework.validation.FieldError;
|
||||||
import org.springframework.validation.ObjectError;
|
import org.springframework.validation.ObjectError;
|
||||||
import org.springframework.validation.ValidationUtils;
|
import org.springframework.validation.ValidationUtils;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.WebDataBinder;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||||
|
|
||||||
@@ -25,6 +27,11 @@ public class ValidationItemControllerV2 {
|
|||||||
private final ItemRepository itemRepository;
|
private final ItemRepository itemRepository;
|
||||||
private final ItemValidator itemValidator;
|
private final ItemValidator itemValidator;
|
||||||
|
|
||||||
|
@InitBinder
|
||||||
|
public void init(WebDataBinder dataBinder) {
|
||||||
|
dataBinder.addValidators(itemValidator);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public String items(Model model) {
|
public String items(Model model) {
|
||||||
List<Item> items = itemRepository.findAll();
|
List<Item> items = itemRepository.findAll();
|
||||||
@@ -179,7 +186,7 @@ public class ValidationItemControllerV2 {
|
|||||||
return "redirect:/validation/v2/items/{itemId}";
|
return "redirect:/validation/v2/items/{itemId}";
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/add")
|
// @PostMapping("/add")
|
||||||
public String addItemV5(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) {
|
public String addItemV5(@ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) {
|
||||||
|
|
||||||
itemValidator.validate(item, bindingResult);
|
itemValidator.validate(item, bindingResult);
|
||||||
@@ -196,6 +203,21 @@ public class ValidationItemControllerV2 {
|
|||||||
return "redirect:/validation/v2/items/{itemId}";
|
return "redirect:/validation/v2/items/{itemId}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/add")
|
||||||
|
public String addItemV6(@Validated @ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) {
|
||||||
|
|
||||||
|
// 검증 실패시
|
||||||
|
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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user