minstory
SpringBoot - Kotlin에서 validation(@Valid)이 동작하지 않을 때 본문
문제 상황
// Controller 일부
@PostMapping("/update-something")
fun updateSomething(
@Valid @RequestPart("request") request: UpdateRequest,
) { ... }
// request Class 일부
import jakarta.validation.constraints.Size
class UpdateRequest (
@Size(max = 20, message = "name 길이가 20자 이하여야 합니다")
val name: String,
) { ... }
문제 원인
class UpdateRequest (
@Size(max = 20, message = "name 길이가 20자 이하여야 합니다")
val name: String,
Kotlin 클래스 필드 프로퍼티가 아니라 생성자에 어노테이션이 적용되고 있어서 request 객체의 프로퍼티에는 @Valid 가 적용되고 있지 않았다.
해결 방법
@Size
-> @field:Size
어노테이션 앞에 field를 추가합니다.
class UpdateRequest (
@field:Size(max = 20, message = "name 길이가 20자 이하여야 합니다")
val name: String,
reference
- https://kotlinlang.org/docs/annotations.html#annotation-use-site-targets
- https://discuss.kotlinlang.org/t/kotlin-doesnt-play-nice-with-beans-validation-annotations-and-this-needs-to-be-addressed/27761
- https://velog.io/@lsb156/SpringBoot-Kotlin%EC%97%90%EC%84%9C-Valid%EA%B0%80-%EB%8F%99%EC%9E%91%ED%95%98%EC%A7%80-%EC%95%8A%EB%8A%94-%EC%9B%90%EC%9D%B8JSR-303-JSR-380
'Spring' 카테고리의 다른 글
Spring Boot에서 @Qualifier 어노테이션의 활용 (0) | 2024.01.25 |
---|
Comments