【问题标题】:spring mvc @RequestPart validation via annotation通过注释进行spring mvc @RequestPart验证
【发布时间】:2018-08-09 09:50:24
【问题描述】:

如何验证正文请求部分不为空?

@PostMapping("/messages")
@ResponseStatus(HttpStatus.CREATED)
fun createMessage(@Valid @RequestPart message: MessageCreate,
                  @Valid @RequestPart @NotEmpty body: MultipartFile,
                  @RequestParam attachments: List<MultipartFile>) {
    return service.create(message, body, attachments)
}

我尝试创建一个自定义验证器注释来检查 body.isEmpty() 结果,但它没有效果。缺什么 ?有可能这样做吗?

【问题讨论】:

    标签: spring-mvc multipartform-data hibernate-validator


    【解决方案1】:

    在请求正文对象前添加@NotNull

    更多信息请参考:Null request body not getting caught by Spring @RequestBody @Valid annotations

    【讨论】:

    • @NotNull 检查正文参数是否为空。我想检查 body.isEmpty() 的结果。但它不检查任何东西。
    【解决方案2】:
    @PostMapping("/messages")
    @ResponseStatus(HttpStatus.CREATED)
    fun createMessage(@Valid @RequestPart message: MessageCreate,
                      @Valid @RequestPart @NotEmpty body: MultipartFile,
                      result: BindingResult,
                      @RequestParam attachments: List<MultipartFile>) {
    
        if (result.hasErrors()) {
            //handle validation failure
        }
    
        return service.create(message, body, attachments)
    }
    

    注意:BindingResult 参数必须在经过验证的方法参数之后立即声明。

    【讨论】:

      猜你喜欢
      • 2010-10-04
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 2016-04-15
      • 1970-01-01
      相关资源
      最近更新 更多