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

Springfox 2.8.0:如何在Swagger-UI中隐藏@ApiModelProperty的allowEmptyValue描述

解决Springfox 2.8.0中Swagger-UI隐藏@ApiModelProperty的allowEmptyValue描述问题

嘿,我刚好碰到过类似的需求,在Springfox 2.8.0版本里要隐藏swagger-ui页面中响应字段里@ApiModelProperty的allowEmptyValue描述,其实通过自定义Springfox的插件就能轻松搞定,不用折腾前端代码,步骤很清晰:

方法:自定义ModelProperty构建插件

Springfox自带了插件扩展机制,我们可以通过实现ModelPropertyBuilderPlugin来拦截模型属性的构建过程,清除掉allowEmptyValue的设置,这样生成的Swagger文档里就不会包含这个属性,UI自然就不会显示对应的描述了。

1. 创建自定义插件类

写一个类实现ModelPropertyBuilderPlugin,并注册为Spring组件:

import org.springframework.stereotype.Component;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.schema.ModelPropertyBuilderPlugin;
import springfox.documentation.spi.schema.contexts.ModelPropertyContext;

@Component
public class HideAllowEmptyValuePlugin implements ModelPropertyBuilderPlugin {

    @Override
    public void apply(ModelPropertyContext context) {
        // 将allowEmptyValue设置为null,让Swagger文档不生成这个属性
        context.getBuilder().allowEmptyValue(null);
    }

    @Override
    public boolean supports(DocumentationType documentationType) {
        // 支持所有Swagger文档类型(这里主要针对Swagger 2)
        return true;
    }
}

2. 确保插件被Spring扫描到

把这个类放在你的Spring Boot项目中被@ComponentScan覆盖的包路径下,要是你是手动配置Bean的话,也可以用@Bean注解把它注册到Spring容器里。

原理说明

这个插件会在Springfox构建每个模型属性的时候触发,我们通过context.getBuilder().allowEmptyValue(null)清除了allowEmptyValue的配置,这样最终生成的swagger.json文件里就不会包含allowEmptyValue字段,Swagger-UI页面也就不会显示对应的描述了。

要是你只想针对个别字段处理,其实可以试试在@ApiModelProperty里显式设置allowEmptyValue = false?不过实测下来,即使设为false,UI还是会显示这个描述,所以全局插件的方式更彻底。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:58:43