【发布时间】:2019-08-02 08:06:40
【问题描述】:
我终于在 Spring 验证方面取得了一些进展(在来自 RabbitMQ 的 JSON 对象上)。
但是有几件事我不明白:
- 在文档中,它声明我可以只使用注释
@NotBlank,然后在我的方法中使用注释@Valid。但是我发现这并没有做任何事情。因此,我改为使用@field:NotBlank,它与以下内容一起工作 - 为什么这个@field能做到这一点?
@JsonIgnoreProperties(ignoreUnknown = true)
data class MyModel (
@field:NotBlank(message = "ID cannot be blank")
val id : String = "",
@field:NotBlank(message = "s3FilePath cannot be blank")
val s3FilePath : String = ""
)
那么使用这个模型的函数:
@Service
class Listener {
@RabbitListener(queues = ["\${newsong.queue}"])
fun received(data: MyModel) {
val factory = Validation.buildDefaultValidatorFactory()
val validator = factory.validator
val validate = validator.validate(data)
// Then this `validate` will return an array of validation errors
println(validate)
}
}
- 如果我错了,请纠正我,但是我假设只使用
@Valid而这一点fun received(@Valid data: MyModel)它只会抛出一些异常让我捕捉 - 基于我的代码的任何想法为什么会这样?
任何建议/帮助将不胜感激。
谢谢。
这里是导入:
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import javax.validation.*
import org.springframework.amqp.rabbit.core.RabbitTemplate
import org.springframework.amqp.rabbit.annotation.RabbitListener
import javax.validation.constraints.NotBlank
【问题讨论】:
-
你能粘贴你的导入吗?
-
附在问题中
标签: spring spring-boot kotlin rabbitmq