首页 > 解决方案 > 为什么 Swagger 1.X 会忽略 @XmlAttribute 字段?

问题描述

我有一个用 Swagger 1.X、Jackson 和 JAXB 注释注释的简单模型类,例如:

@XmlRootElement(name = "ClassA")
@ApiModel(value = "ClassA")
@XmlAccessorType(XmlAccessType.NONE)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ClassA
{
    @ApiModelProperty(value = "The attribute key", example = "a key")
    @XmlAttribute
    private String key;

    @ApiModelProperty(value = "The attribute name", example = "a name")
    @XmlAttribute
    private String name;

    @ApiModelProperty(value = "a value")
    @XmlElement
    private Object value;

    public String getKey()
    {
        return key;
    }

    public void setKey(String key)
    {
        this.key = key;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public Object getValue()
    {
        return value;
    }

    public void setValue(Object value)
    {
        this.value = value;
    }
}

这由 CXF 的Swagger2Feature处理以生成通过 Swagger-UI 呈现的 swagger.json 文档。CXF 版本为 3.2.1,似乎使用 Swagger 1.5.16。

在生成的 swagger.json 文档中,使用 @XmlAttribute 注解的字段将被忽略(仅包含 @XmlElement 注解的值字段)。有没有办法让 Swagger 在生成的规范中包含这些,而不是将它们全部更改为 XML 元素?

标签: javaswagger

解决方案


显然,这是 CXF 3.2.1 - Swagger Core 1847使用的 Swagger 版本 (1.5.16) 中的一个错误。该错误已在Swagger Core 1.5.18中修复。


推荐阅读