Я столкнулся с проблемой при попытке десериализации ввода, поступающего из WWW-формы, в enum-класс в приложении Spring в Kotlin.
Мои классы DTO и enum:
enum class Status(@get:JsonValue val value: Int) {
NORMAL(0),
ERROR(1);
companion object {
@JvmStatic
@JsonCreator
fun of(number: Int?): Status? {
return values().find { it.value == number }
}
}
}
data class RequestData(val status: Status?)
Метод получения запроса POST контроллера:
@PostMapping("/post")
fun register(@Valid data: RequestData, error: Errors) {}
Когда я делаю POST-запрос с status = 0
, используя Почтальон, запрос завершается с ошибкой со следующим исключением.
java.lang.IllegalArgumentException: Parameter specified as non-null is null: method com.example.Controller.post, parameter data
Когда я делаю запрос с status = NORMAL
, тогда не исключение, но это то, что я не хочу.
Я использую application/x-www-form-urlencoded
тип контента в запросе POST.
Пожалуйста, дайте мне знать, где я делаю неправильно.