- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Swagger-UI 和 Java spring/hibernate。Swagger UI 版本为 2。
我在使用枚举方面遇到了困难。
我有一个 POJO 模型,其中声明了以下枚举属性。
@Enumerated(EnumType.STRING)
@Column(name = "gender")
@Access(AccessType.FIELD)
private Gender gender;
性别是枚举,如下:
public enum Gender {
M("Male"), F("Female");
private String displayValue;
private Gender(String displayValue) {
this.displayValue = displayValue;
}
@Override
public String toString() {
return displayValue;
}
public String getDisplayValue() {
return displayValue;
}
public String getName() {
return name();
}
}
但是我的 swagger 仅在 UI 中显示显示值(male
或 female
)以及下拉列表的显示值。我希望 Swagger UI 显示类似于下面的 HTML 等效内容:
<select name="gender">
<option value="M">Male</option>
<option value="F">Female</option>
</select>
如何实现这一目标? 阅读 Swagger UI 文档,对我来说非常困惑,无法理解它。请帮忙。
最佳答案
您需要通过实现接口(interface) AllowableMapValues
来创建自定义类 ( springfox.documentation.service.AllowableValues
)这将返回 Map 类型而不是 List 类型。 (参见类springfox.documentation.service.AllowableListValues
以供引用)。
之后你需要使用 springfox.documentation.schema.Enums
中的静态方法类通过隐藏静态方法( AllowableValues allowableValues(Class<?> type)
)来返回新创建的 AllowableMapValues
类似的类
public static AllowableValues allowableValues(Class<?> type) {
if (type.isEnum()) {
Map<String, String> enumValues = getEnumMapValues(type);
return new AllowableMapValues(enumValues, "MAP");
}
return null;
}
其中 <"K","V"> 配对类似于 <"M", "Male">
你应该创建静态方法getEnumMapValues
其工作方式应与 getEnumValues
相同Enums
中的方法类。
现在 swagger 将生成所需的类型。
记得输入@JsonValue
你的方法上的注释Gender
您喜欢在 UI 上显示的枚举。Swagger 默认情况下会选取用 @JsonValue
注释的值。 。如果没有找到,则直接将输入作为字符串。
我还没有尝试过这一切,但是,我能够通过注释以下方法在 swagger 下拉列表中获取枚举名称而不是枚举值。
@JsonValue
public String enumName() {
return name();
}
这将返回以下内容中号
如果可以解决问题,您可以尝试上述方法
关于Java Swagger UI - 如何正确配置枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38803433/
我是一名优秀的程序员,十分优秀!