Spring Boot请求验证不起作用

问题描述 投票:0回答:2

应用背景

  • 春季启动版本1.5.12
  • 通过swagger-codegen-maven-plugin生成的Java bean

问题

[使用开放API 3.0创建的swagger模板已使用swagger-codegen-maven-plugin转换为pojos。

这里是生成pojo

public class TestPojo {

  @JsonProperty("isNameValid")
   private Boolean isNameValid = null;

 @Schema(
    required = true,
    description = "Checks if name is Valid "
)
public Boolean isIsNameValid() {
    return this.isNameValid;
}

}

这里是使用的招摇模板

openapi: 3.0.1
info:
title: XM MNOLine Domain Definitions
description: |
version: "V0.0.1"

components:
 schemas:

  TestPojo:
      required:
        - isNameValid
      properties:
        isNameValid:
          type: boolean
          description: |
            Checks if name is Valid

在控制器中,@ Valid批注似乎没有任何影响。.仍会处理字段“ isNameValid”的值为空或没有值。。

 processRequest(@Valid @RequestBody TestPojo request)

我想念的..

java spring spring-boot openapi
2个回答
0
投票

如果我理解正确,那么您希望您的“ isNameValid”字段出现在请求中,否则引发异常。


0
投票
例如

public class TestPojo { @JsonProperty("isNameValid") @NotNull private Boolean isNameValid; public void setIsNameValid(Boolean isNameValid) { this.isNameValid = isNameValid; } public Boolean isNameValid() { return isNameValid; } }

以上代码将不允许该字段的null值,即请求将需要具有isNameValid

我希望它能解决您的问题。

如果我误解了您的要求,请告诉我,并将尝试解决您的问题。

编辑

[嗨,我目前没有任何正在进行的项目使用大张旗鼓的开放API,因此我无法对其进行测试,但是可以检查Validate spring contracts

我希望这会有所帮助,否则请告诉我。

祝你好运!
© www.soinside.com 2019 - 2024. All rights reserved.