应用程序背景
- 弹簧引导版本1.5.12
- 通过swagger codegen maven插件生成的Java bean
问题
使用开放式API 3.0创建的型锻模板使用型锻-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"的Null值或无值。。
processRequest(@Valid @RequestBody TestPojo request)
我错过了什么。。
似乎已经报告了此问题。。https://github.com/swagger-api/swagger-codegen/issues/7058
如果我理解它是正确的,那么您希望您的"isNameValid"字段出现在请求else-throw异常中。
因此,为了使您的字段在请求中成为强制性字段,您必须用@NotNull
对其进行注释。
前任。
public class TestPojo {
@JsonProperty("isNameValid")
@NotNull
private Boolean isNameValid;
public void setIsNameValid(Boolean isNameValid) {
this.isNameValid = isNameValid;
}
public Boolean isNameValid() {
return isNameValid;
}
}
上述代码将不允许该字段的null
值,即请求将需要具有isNameValid
。
我希望它能解决你的问题。
如果我误解了你的要求,请告诉我,我会尽力解决你的问题。
编辑
嗨,我目前没有任何正在进行的项目使用swagger开放api,所以我不能测试它,但你能检查一下Validate spring contracts吗。
我希望这能有所帮助,否则请告诉我。
祝你好运!