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