티스토리 뷰

    @InitBinder//이 컨트롤러가 요청 될때 마다 항상 불러온다.
    public void init(WebDataBinder dataBinder){
        dataBinder.addValidators(itemValidator);
        // 요청 될 때마다이면 항상 itemValidator가 포함된다.

        //순서는 @Validated 어노테이션이 있는 맵핑 메소드에 모델을 supports에서 검증 후 true값을 던지면
        //이후 validate 메소드로 바인딩 데이터가 쌓이게 된다.
    }
    @PostMapping("/add") // WebDataBinder를 사용하기 위해서는 모델 앞에 @Validated 어노테이션을 추가해야한다.
    public String addItemV6(@Validated @ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) {
        //WebDataBinder로 인해 검증 데이터가 BindingResult에 알아서 쌓이게 된다.
        //타입 검증

        if(bindingResult.hasErrors()){
            log.info("errors={}",bindingResult);
            return "validation/v2/addForm";
        }

        Item savedItem = itemRepository.save(item);
        redirectAttributes.addAttribute("itemId", savedItem.getId());
        redirectAttributes.addAttribute("status", true);
        return "redirect:/validation/v2/items/{itemId}";
    }

 

참고로 아예 전체 글로벌로 사용 할 수 있다

하지만 별로 사용하지는 않으며 참고만 하라고 하네..(글로벌을 설정하면 BeanValidator이 자동 설정이 안된다고한다.)

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 implements WebMvcConfigurer {

	public static void main(String[] args) {
		SpringApplication.run(ItemServiceApplication.class, args);
	}

	@Override
	public Validator getValidator() {
		return new ItemValidator();
	}

}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함