Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swigger UI-如何正确配置枚举?_Java_Spring Mvc_Enums_Swagger Ui - Fatal编程技术网

Java Swigger UI-如何正确配置枚举?

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");

我使用的是带有JavaSpring/hibernate的SwiggerUI。 大摇大摆的用户界面版本是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();
    }   
}
但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
)。(参考请参见class
springfox.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();
}