Kotlin Spring Bean Validation - поля, допускающие значение NULL, аннотированные @field: NotNull в проверенной форме, все еще обрабатываются как допускающие значение NULL
В моем приложении Spring, созданном с помощью Kotlin, я использую проверку bean-компонентов в классе данных OfferForm ниже. Как вы можете видеть, все поля моей OfferForm допускают значение NULL, так что проверка может начаться, а не исключение, которое генерируется из-за того, что поля имеют значение NULL.
Однако моя проблема заключается в том, что, хотя проверка в моем OfferForm гарантирует, что поля не будут нулевыми после проверки @field:NotNull
- когда я пытаюсь создать предложение (объект домена) из этой проверенной формы, поскольку поля имеют подписи, допускающие значение NULL (даже если они были проверены как ненулевые), я все равно получаю сообщение об ошибке из-за возможных значений NULL при попытке заполнить объект Offer ниже в методе контроллера.
Как вы можете видеть в контроллере, форма была проверена с помощью @Valid. Есть ли способ использовать Spring, чтобы он знал, что поля не допускают значения NULL, и не вызывал ошибок при попытке преобразовать OfferForm в Offer.
Также я не ищу ответов, включающих !!
оператор - вместо этого я ищу решение, в котором Framework понимает, что эти поля не могут быть пустыми из-за только что проведенной проверки.
Любая помощь будет принята с благодарностью - спасибо.
OfferForm -
data class OfferForm(
@field:NotNull
var offerName: String?,
@field:NotNull
@field:DateTimeFormat(pattern = ISO_DATE_FORMAT)
@field:NotPast
var expiryDate: LocalDate?,
@field:NotNull
var type: OfferType?,
) {
fun toOffer() = Offer(
offerName = this.offerName, // Error saying offerName can't be nullable
expiryDate = this.expiryDate, // Error saying expiryDate can't be nullable
type = this.type // Error saying type can't be nullable
)
}
OfferController
@PostMapping("/offers")
@ResponseBody
fun createOffer(@RequestBody @Valid offerForm: OfferForm): ResponseEntity<Offer> {
val offer = offerService.create(offerForm.toOffer())
return ResponseEntity(offer)