不能使用MongoDB的spring验证
我在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\"])
Spring通过检查objects
的字段或属性值来验证objects
。 验证一个object
你需要先创建它。 当json解串器试图解析输入并创建Tag
实例时,遇到并报告问题:
JSON属性名称的
[simple type, class kagaz.sano.model.Tag]
值的实例化失败
为了使Spring Validation能够开始工作,需要一个对象的实例 – 即使它是无效的 。
这意味着你将需要允许json反序列化器创建一个处于无效状态的对象,以便可以通过验证器来检查它,如下所示:
data class TagDto(@get:NotNull var name: String? = null) { @get:NotNull var id: ObjectId? = null }