Java Swigger UI-如何正确配置枚举?
我使用的是带有JavaSpring/hibernate的SwiggerUI。 大摇大摆的用户界面版本是2 我很难使用枚举 我有一个POJO模型,其中声明了以下枚举属性Java Swigger UI-如何正确配置枚举?,java,spring-mvc,enums,swagger-ui,Java,Spring Mvc,Enums,Swagger Ui,我使用的是带有JavaSpring/hibernate的SwiggerUI。 大摇大摆的用户界面版本是2 我很难使用枚举 我有一个POJO模型,其中声明了以下枚举属性 @Enumerated(EnumType.STRING) @Column(name = "gender") @Access(AccessType.FIELD) private Gender gender; 性别如下所示: public enum Gender { M("Male"), F("Female");
@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();
}
}
但my swagger在UI中仅显示显示值(男性
或女性
)以及下拉列表的显示值。我希望Swigger UI显示类似于以下内容的HTML等价物:
<select name="gender">
<option value="M">Male</option>
<option value="F">Female</option>
</select>
男性
女性
如何做到这一点?
阅读那些大摇大摆的用户界面文档,让我很困惑,无法理解。请提供帮助。您需要通过实现将返回映射类型而不是列表类型的接口
springfox.documentation.service.AllowableValues
,创建一个自定义类(AllowableMapValues
)。(参考请参见classspringfox.documentation.service.AllowableListValues
)
之后,您需要在springfox.documentation.schema.Enums
类中使用静态方法,隐藏静态方法(AllowableValues AllowableValues(类类型)
)以返回新创建的allowablemappvalues
类
public static AllowableValues allowableValues(Class<?> type) {
if (type.isEnum()) {
Map<String, String> enumValues = getEnumMapValues(type);
return new AllowableMapValues(enumValues, "MAP");
}
return null;
}
这将返回以下结果
M
如果上述方法解决了@ash可能重复或不重复的问题,您可以尝试上述方法。我在“Java编程语言”的上下文中提出了这个问题,而您指出的答案是在“Javascript”上下文中给出的。这并不能解决我的问题,因为java和Javascript是不同的,特别是JavaSpring和Javascript。这意味着它是重复的,因为它显示了如何在Swagger中定义枚举。然而,我可能没有正确地阅读您的问题。我清楚地提到了“Java”,您的问题是您在Swagger UI中显示enum时遇到了问题。我说的这个问题是这个问题答案的复制品。Swagger UI使用Javascript而不是Java资产,因此这里有一个从Java到Javascript的明显交叉。
@JsonValue
public String enumName() {
return name();
}