You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenAPI Generator 7.1.0未生成@NotBlank注解问题求助

解决openapi-generator-maven-plugin 7.1.0生成@NotBlank注解的问题

针对你遇到的必填字符串字段仅生成@NotNull、需要同时生成@NotBlank的问题,有以下几种可行方案:

方案1:通过OpenAPI规范定义实现(最简便)

OpenAPI的required: true仅标记字段不能为null,若要触发空字符串校验,需给字符串字段额外添加minLength: 1配置。插件会自动为这类字段生成@NotNull + @Size(min = 1),如果你的校验场景可以接受@Size(min=1)替代@NotBlank,这是最快的解决方式。

示例OpenAPI Schema片段:

components:
  schemas:
    User:
      type: object
      required:
        - username
      properties:
        username:
          type: string
          minLength: 1

方案2:自定义Mustache模板(强制生成@NotBlank)

如果必须生成@NotBlank注解,需要修改插件的模型模板:

  1. 复制OpenAPI Generator内置的Java Spring模型模板model.mustache到项目的src/main/resources/openapi/templates目录(模板可从插件源码或Maven仓库中获取)
  2. 修改模板中处理必填字段的逻辑,添加字符串类型判断并生成@NotBlank:
    找到生成@NotNull的代码块,修改为:
    {{#required}}
    {{#isString}}
    @jakarta.validation.constraints.NotBlank
    {{/isString}}
    @jakarta.validation.constraints.NotNull
    {{/required}}
    
    (Spring Boot 3使用jakarta包路径,若用Spring Boot 2则替换为javax)
  3. 在Maven插件配置中指定自定义模板目录:
    <plugin>
      <groupId>org.openapitools</groupId>
      <artifactId>openapi-generator-maven-plugin</artifactId>
      <version>7.1.0</version>
      <configuration>
        <!-- 你的原有配置 -->
        <interfaceOnly>true</interfaceOnly>
        <skipDefaultInterface>true</skipDefaultInterface>
        <useSpringBoot3>true</useSpringBoot3>
        <useSpringController>true</useSpringController>
        <openApiNullable>false</openApiNullable>
        <performBeanValidation>true</performBeanValidation>
        <!-- 指定自定义模板目录 -->
        <templateDirectory>${project.basedir}/src/main/resources/openapi/templates</templateDirectory>
      </configuration>
    </plugin>
    

注意事项

  • 确保项目依赖中已包含Jakarta Validation API(Spring Boot 3默认引入,若手动管理需添加jakarta.validation:jakarta.validation-api和对应的实现)
  • @NotBlank仅适用于字符串类型,模板中的{{#isString}}判断可以避免给非字符串字段错误添加该注解

内容的提问来源于stack exchange,提问作者pswrdf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 15:02:43