【发布时间】:2017-04-02 17:36:38
【问题描述】:
我在 Kotlin 中寻找春季验证数据模型的解决方案。但我不能。
以下是标签data class。
data class Tag(@field:NotNull var name: String) {
lateinit @Id var id: ObjectId
}
我已启用配置以使用 bean 验证
@Configuration
open class ValidatorConfig {
@Bean
open fun validator() = LocalValidatorFactoryBean()
}
据我所知,Spring Boot 会自动加载所有 Bean 配置。在运行时,当使用空 Json POST 时,应该会抛出正确的验证错误,但会抛出以下错误
Instantiation of [simple type, class kagaz.sano.model.Tag] value failed for
JSON property name due to missing (therefore NULL) value for creator parameter
name which is a non-nullable type\n at [Source:
org.apache.catalina.connector.CoyoteInputStream@66f3b65c; line: 3, column: 1]
(through reference chain: kagaz.sano.model.Tag[\"name\"])
【问题讨论】:
-
您的属性是字符串类型。所以 Kotlin 不允许你在其中存储 null,然后让验证器检查它是否为 null。你需要字符串吗?为此。
-
但是当我使用 String? 时,数据未经任何验证就存储在 DB 中。
-
你确定配置已经加载了吗?触发验证的代码/注释在哪里?
-
是的,配置已加载。我在上下文中浏览了
beanDefinitionNames的列表。它已加载。
标签: spring mongodb kotlin bean-validation