org.springframework.validation.BeanPropertyBindingResult
@ResponseBody
@PostMapping(value = "/user/update_profile/{id}", consumes =
{MediaType.MULTIPART_FORM_DATA_VALUE})
public UpdateUserResponseDto UpdateProfile(@PathVariable long
id, @Validated @ModelAttribute UpdateUserRequestDto
updateUserRequestDto, BindingResult result)
throws IOException, NoSuchAlgorithmException {
UpdateUserResponseDto updateUserResponseDto = updateService.updateProfile(
id, updateUserRequestDto);
return updateUserResponseDto;
}
multipartfile은 빈 값으로 전송하면 데이터가 바인딩 되지 않아 바인딩 에러가 발생한다. 파라미터 변수로 BindingResult 타입의 bindingresult 를 추가하여 바인딩 에러 결과를 변수에 담아주어야 한다. bindingresult를 사용할 때 유효성 검사를 지시하는 @Valid 어노테이션을 같이 사용해야 하는데 @Valid를 사용할 수 없다는 인텔리제이 에러가 떠서 대신 @Validated와 @ModelAttribute를 추가하였다.
강의를 들어서 이해하는거랑 실제로 구현하는거랑은 천지차이라는 생각이 들었다. 예외처리도 실제로 해보니까 어느 코드에 예외처리를 해주어야하는지 찾아보는게 재미있었다. 많은걸 배울수있는 프로젝트 기간이 너무 좋고 더 열심히 해야겠다.