TIL020 | DataClass Validation

묘한묘랑·2023년 12월 26일
0

TIL

목록 보기
20/31

dto를 그냥 class를 사용하다 data class로 변경하면서 생긴 일이다.

data class로 바꾼 이후 동작을 확인하던 도중 validation Exception이 제대로 작동하지 않아 무슨 일인가 살펴보니

data class RequestTodoCardDto (
    @NotNull(message = "boardId는 필수 입니다.")
    val boardId: Long,

위와 같은 형태일 때 Null값이 아닌 대체 값으로 0이 들어오고 있었다.
이후 boardId를 null able 변수로 만들어 준 후 다시 실행하자, 이번에는 NullPointException이 발생하였다.
분명 Validation 과정에서 처리될 것이라 생각되었지만 처리되지 않았다.
그리하여 추가적으로 검색한 결과, 생성자가 아닌 필드에 Annotation을 붙여야 한다는 사실을 알게 되었다. 추가적으로 매개변수에 @NotNull은 아무 의미가 없다는 사실도 알게 되었다.

Ref

data class RequestTodoCardDto (
    @field:NotNull(message = "boardId는 필수 입니다.")
    val boardId: Long? = null,

    @field:NotNull(message = "작성자는 필수 입니다.")
    val writer: String? = null,

    @field:NotNull(message = "내용은 필수 입니다.")
    @field:Size(min = 1, max = 1000, message = "내용은 1자 이상 1000자 이하여야 합니다.")
    val description: String? = null,

    @field:NotNull(message = "제목은 필수 입니다.")
    @field:Size(min = 1, max = 200, message = "제목은 1자 이상 200자 이하여야 합니다.")
    val title: String? = null,
)

위와 같이 field를 붙여줌으로써 해결되었다.

profile
상황에 맞는 기술을 떠올리고 사용할 수 있는 개발자가 되고 싶은 개발자

0개의 댓글