Search code examples
swagger-uispringfox

springfox hide allowEmptyValue when field annotated with @ApiModelProperty


How can I hide the allowEmptyValue description of response type on swagger-ui.html.

springfox version: 2.8.0

springfox-ui version: 2.8.0

screenshot from swagger html


Solution

  • Maybe a customized property builder plugin can help, try to set allowEmptyValue to null.

    import org.springframework.stereotype.Component;
    import com.fasterxml.jackson.databind.introspect.AnnotatedMethod;
    import com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition;
    import com.google.common.base.Optional;
    import io.swagger.annotations.ApiModelProperty;
    import springfox.documentation.builders.ModelPropertyBuilder;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spi.schema.ModelPropertyBuilderPlugin;
    import springfox.documentation.spi.schema.contexts.ModelPropertyContext;
    
    @Component
    public class CustomizedModelPropertyBuilderPlugin implements ModelPropertyBuilderPlugin {
    
        @Override
        public boolean supports(final DocumentationType arg0) {
            return true;
        }
    
        @Override
        public void apply(final ModelPropertyContext context) {
            final ModelPropertyBuilder builder = context.getBuilder();
    
            final Optional<BeanPropertyDefinition> beanPropDef = context.getBeanPropertyDefinition();
    
            if (!beanPropDef.isPresent()) {
                return;
            }
    
            final BeanPropertyDefinition beanDef = beanPropDef.get();
            final AnnotatedMethod method = beanDef.getGetter();
            if (method == null) {
                return;
            }
    
            final ApiModelProperty apiModelProperty = method.getAnnotation(ApiModelProperty.class);
            if (apiModelProperty == null) {
                return;
            }
    
            builder.allowEmptyValue(null);
        }
    }