Spring не нулевая проверка, генерирующая исключение HttpMessageNotReadableException вместо MethodArgumentNotValidException в kotlin - PullRequest
0 голосов
/ 21 февраля 2019

Я делаю простое приложение на Kotlin, используя Spring, но у меня проблема с проверкой.

У меня есть этот класс сущностей:

@Entity
@Table(name = "category")
data class Category(
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        val id: Long?,
        @field:NotNull @field:NotEmpty val name: String)

И моя функция контроллеранапример:

@PostMapping
@ResponseStatus(HttpStatus.CREATED)
fun create(@Valid @RequestBody category: Category): ResponseEntity<Category>

create имеет некоторый код, но это не имеет значения для вопроса, моя проблема с проверкой тела запроса.Если я отправляю категорию с пустым полем имени, выдается исключение MethodArgumentNotValidException, но если я отправляю ноль в поле name, вместо этого выдается исключение HttpMessageNotReadableException.Кто-нибудь знает, возможно ли сделать передачу нуля в поле, помеченное @NotNull, чтобы также бросить MethodArgumentNotValidException в Котлин.

1 Ответ

0 голосов
/ 02 мая 2019

Таким образом, ваша проблема заключается в том, что вы указываете поле имени как необнуляемое, по умолчанию модуль Джексона для kotlin проверит его и выдаст HttpMessageNotReadableException, что вызывает MissingKotlinParameterException во время процесса отображения json.Если вы пометите name, поданную как nullable, json mapping будет пройден и перейдете к фазе проверки пружины с помощью @Valid, тогда мы получим MethodArgumentNotValidException

@Entity
@Table(name = "category")
data class Category(
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long?,
    @field:NotNull @field:NotEmpty val name: String?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...