ActNow

Spring Validation DTO 입력값 검사 문제 해결

King of Silicon Valley 2021. 12. 4. 17:17
728x90

문제

Actnow서비스에는 공고를 등록 수정하거나 프로필을 등록 수정을 할 때 

requestDto클래스로 값을 받아서 데이터베이스 처리를 합니다. 

 

근데 문제가 하나 생겼는데... 

 

다음과 같이 title에 빈값을 주면 제목이 없는 상태로 저장이 되고 

title이란 키값을 아예 안줘도 저장이 되는 경우가 발생했습니다. 

 

공고의 경우 너무 다양한 정보가 많아서 null값을 허용하는 경우를 많이 뒀는데 제목 같은 경우 홈페이지 리스트에 노출이 되는데

빈값으로 저장을 시키면 상당히 홈페이지의 미관을 해치는 경우가 많고 의미 없는 데이터 처럼 보여서 제목은 무조건 값을 받기로 합니다. 

 


해결

기존에 장고로 개발 할 때는 빈값에 대한 모든 것을 분기로 잡아서 예외처리를 해주었는데 스프링의 경우 validation을 활용하여 손쉽게 할 수 있었습니다. 

 

implementation 'org.springframework.boot:spring-boot-starter-validation'

gradle에 spring validation의존성을 추가 해줍니다. 

 

 

title 항목은 NotBlank어노테이션을 달아서 빈값도 안되고 json파일에 키값이 없어도 되게 바꿔 주었습니다. 

 

컨트롤러에서 인자에 @Valid어노테이션을 넣으면 적용이 됩니다. 

 

title에 빈값을 넣으면 제가 지정한 에러메세지를 반환합니다. 

 

참고로 커스텀 에러 메세지를 반환하려면 

 

컨트롤러 밑에 다음과 같이 정의 해주어야만 커스텀 에러 메세지를 반환할 수 있습니다. 

저 같은 경우에는 Message라는 클래스를 통해 프론트에게 에러 메세지를 전달해주는데 Message클래스에 에러 메세지를 삽입시켜서 반환 시키게 했습니다. 

'ActNow' 카테고리의 다른 글

🎬 211204 운영 로그  (0) 2021.12.04
🎬 운영로그 day3  (0) 2021.11.26
🎬 운영로그 day2  (0) 2021.11.25
아마존 그만하고 네이버 합시다!  (0) 2021.11.24
🍀 application.properties로 변수 숨기기  (0) 2021.11.22