shekwl24
60
2021-01-02 10:42:45 작성 2021-01-02 10:44:36 수정됨
2
174

Spring validation 처리 관련하여 질문드립니다!


@PostMapping("/api/board")

public ResponseDto<String> save(@Valid @RequestBody Board board, @AuthenticationPrincipal PrincipalDetail principal, BindingResult bindingResult) { 

if(bindingResult.hasErrors()) {

String errorMessage = bindingResult.getAllErrors().get(0).getDefaultMessage();

System.out.println(5);

return new ResponseDto<String>(HttpStatus.INTERNAL_SERVER_ERROR.value(), errorMessage);

} else {

boardService.글쓰기(board, principal.getUser());

System.out.println(6);

return new ResponseDto<String>(HttpStatus.OK.value(), "글쓰기가 완료되었습니다.");

}

}


다음과 같이 errorMessage를 보내어 view단에서 처리해주려하는데 이게 

MethodArgumentNotValidException를 throw해버리는데 이것을 throw로나 controllerAdvice로 처리해줘야하나요? 


0
  • 답변 2

  • 수평선
    1k
    2021-01-02 14:47:09

    코드를 보니 rest 방식으로 서비스 하는것 같은데요..

    별도 view 로 처리하는 방식으로 보이지 않네요.

    rest 인경우 유효성체크는 controllerAdvice 로 하는게 일반적입니다.

    BindingResult 는 jsp같은 view를 사용할때 사용하면 됩니다.

  • shekwl24
    60
    2021-01-03 00:56:02

    @PostMapping("/api/board")

    public ResponseDto save(@RequestBody @Valid Board board, @AuthenticationPrincipal PrincipalDetail principal, BindingResult bindingResult) { 

    boardService.글쓰기(board, principal.getUser());

    return new ResponseDto(HttpStatus.OK.value(), "글 쓰기가 완료되었습니다.");

    }

    다음과같이 처리하고 Exception은 ControllerAdvice로 처리해주었습니다. 감사합니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.