spring - 如何配置Spring MVC以验证 Controller 方法参数的构造函数参数

标签 spring validation kotlin

我正在Kotlin中编写一个项目,并将其放在 Controller 中:

@PostMapping("/token")
fun generateToken(@RequestBody @Valid credentials: Credentials) { /* something */ }

data class Credentials(@Email @NotBlank val email: String,
                       @NotBlank val password: String)

默认情况下,@Valid注释告诉Spring验证对象字段。但是Kotlin在构造函数参数上放置了约束注释,因此验证不起作用。为了使其工作,我必须为注释定义使用场所目标:
data class Credentials(@field:Email @field:NotBlank val email: String,
                       @field:NotBlank val password: String)

这很烦人,并增加了视觉垃圾。是否可以配置Spring以验证构造函数参数?

最佳答案

您无能为力。您可以通过组合每个字段的注释使它看起来更好一些,例如:

data class Credentials(@field:[Email NotBlank] val email: String,
                   @field:NotBlank val password: String)

除此之外,您唯一的其他选择是:
  • 手动配置的Spring验证类
  • 验证代码体内的数据
  • 关于spring - 如何配置Spring MVC以验证 Controller 方法参数的构造函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50016336/

    相关文章:

    eclipse - 未解析的引用 : pow in Eclipse using Kotlin

    java - Spring Boot 与 Apache Shiro

    python - Django 形成 HTML5 验证模式

    C# - 当方法参数验证失败时,我应该踢回异常吗?

    html - Play Framework 中的客户端表单验证

    Android Jetpack 导航 Controller |获取当前目的地的操作列表

    java - 单个应用程序中有两个版本的 Spring Framework?

    java - 覆盖默认的 org.springframework.amqp.rabbit.connection.CachingConnectionFactory 实现

    java - 在 java/spring 中使用以下格式从属性文件中读取并提取对象

    kotlin - 如何仅在需要时读取Maven存储库凭据?