【问题标题】:How to validate RequestBody with nullable fields when all properties are empty/null values当所有属性为空/空值时,如何使用可为空字段验证 RequestBody
【发布时间】:2020-01-14 10:11:52
【问题描述】:

我想知道是否有比在方法开头写检查更好的方法。

本题基于以下代码:

类 Pojo:

data class PojoX(val name: String?, val city: String?)

控制器:

@PatchMapping("/demo")
fun update(@RequestBody request: PojoX): PojoDTO{

    if (request.name == null && request.city == null) {
        throw ResponseStatusException(HttpStatus.BAD_REQUEST, "Atleast one field should be filled")
    }

    // Do somthing if atleast one field is filled...
}

我希望在向请求类中添加新属性时,无需添加新检查即可轻松维护代码。

Spring中是否有可以检查所有字段是否为空的注解?

【问题讨论】:

  • 添加@NotNull并将@Valid放在@RequestBody旁边。
  • @M.Deinum 我不想检查字段级别,因为它们可以为空。我只是希望它们不是全部为空/空。据我所知,NotNull 注释在这里没有帮助还是我错了?
  • 然后使用 javax.validqation 编写规则。但是,如果您扩展它,您将需要向它添加字段。除非你开始使用内省/反思……

标签: spring rest kotlin request


【解决方案1】:

您需要编写一个自定义验证器,该验证器仅在至少有一个字段不为空时才有效(即将您当前的支票封装到验证器中,然后使用@Valid 注释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多