소개
게시글
질문&답변
2021.08.05
type에러와 field에러 처리 순서
푸덕푸더덕님이 하셨던 상황 // ValidationItemControllerV2.java // 여기서 먼저 typemismatch로 일어난 에러를 먼저 확인후 리다이렉트 if (bindingResult.hasErrors()){ log.info("errors = {}", bindingResult); return "redirect:{/abcd/aaa..}"; } // 에러가 없으면 Field 검증로직 시행 if(!StringUtils.hasText(item.getItemName())){ errors.rejectValue("itemName", "required"); } if (item.getPrice() == null || item.getPrice() 1000000){ errors.rejectValue("price", "range",new Object[]{1000, 1000000}, null); } ... 하고싶으신건 TypeMismatch 으로 리턴되는 시점과, Field 검증오류로 리턴되는 시점을 controller에서 구분하고, 따로 처리하시길 바라시는것같은데..이 강의에서 @Validated 어노테이션을 사용하게됨으로써, Controller의 hasErrors()를 호출하기전에 'ItemValidator'에서 이미 검증을 다하고 나와서 Controller로 접근하기 때문에, 이때는 어떻게 따로 Type Mistmatch만 뽑아서 controller에서 redirect 하는지 여쭤보는것같습니다. 잠깐 해본결과로는 .. ItemValidator의 validate()를 좀 수정해보면 해결되지 않을까 생각합니다 // ItemValidator.java @Override public void validate(Object target, Errors errors) { Item item = (Item) target; if ( ... ){ // Type을 검사 return; // Type이 맞지 않으면 Field 검증로직 전에 return } // Field 검증 로직 ... } // ValidatationControllerV2.java @PostMapping("/add") public String addItemV6(@Validated @ModelAttribute Item item, BindingResult bindingResult, RedirectAttributes redirectAttributes, Model model) { if (bindingResult.hasErrors()){ List allErrors = bindingResult.getAllErrors(); // 모든 에러를 가져옴 for (ObjectError error : allErrors) { System.out.println("error = " + error.getCode()); // error = typeMissmatch // error.getCode()가 typeMissmatch이면 리다이렉트 !! return "redirect:/"; } log.info("errors = {}", bindingResult); return "validation/v2/addForm"; } .... } 이 결과, (사진) 테스트할땐 typeMissmatch를 캐치했기때문에 Field 검증이 작동되지않고, typeMissmatch만 Binding되서 form을 다시 리턴하도록 했는데, form을 리턴하는 대신 redirect 경로를 리턴한다면, 정상 동작하실것 같습니다! 저도 공부중이라.. 도움이 되실지는 모르겠지만, 테스트해보니 되긴해서 적어봅니다 !
- 0
- 3
- 423
질문&답변
2021.06.30
템플릿에서 SpringBean 조회
여태 반복적으로 컨트롤러 모델에 데이터를 넣었던 지난날들이 주마등처럼 지나가네요..!망치로 머리를 맞은 느낌입니다감사합니다 (__)
- 2
- 2
- 226
질문&답변
2021.06.23
로그 선언 부분 질문입니다.
위 같은경우는 Root Class마다 다 log를 선언해서 쓸경우에 사용할수 있을것같고, 아래 같은경우는 싱글톤패턴처럼 어디 LogClass를 만들어서 Logger를 Class마다 공유해서 쓸수 있는 차이가 아닐까요..! (긁적)실무에서는 어떤식으로 보통 쓰이는지 저도 궁금합니다
- 1
- 3
- 1.6K