当前位置: 首页 > 知识库问答 >
问题:

使用swagger记录枚举值中的字符串

何乐
2023-03-14

在尝试获取allowableValues标记的枚举值时,我遇到了以下错误。

批注属性apimodelProperty.AllowAbleValues的值必须是常量表达式

我想做的是:

@ApiModelProperty(allowableValues = new Enums().enumToString(SomeEnum.class))
private String someString;
public final <E extends Enum<E>> String enumToString(Class<E> inputEnum) {
    //inputEnum;
    for (Enum enumValues : EnumSet.allOf(inputEnum)) {
          //will create a string of the enum values
        }

    return "will be a formatted string of the enum values";
}

我有可能做我想做的事吗?我知道在我的API中只公开枚举是可能的,然后swagger会自动识别允许的值,但是需要将有问题的字段公开为字符串,即使我们的内部逻辑将其作为枚举。

提前感谢您的帮助!

共有1个答案

郤飞英
2023-03-14
@ApiModelProperty(value = "embed", dataType = "[Lmodel.request.Embed;")
private final List<String> embed;

嵌入路径是枚举列表。在swagger文档中向您展示了如下内容:

type: "object"
properties:
  embed:
    type: "array"
    description: "embed"
    items:
      type: "string"
      enum:
        -SOME
        -SOME
        -SOME
        -SOME
 类似资料:
  • 问题内容: 我定义了以下枚举 现在的印刷价值是 相反,我想打印枚举的值 要实现此功能可以做些什么? 问题答案: 您正在打印枚举 对象 。如果只想打印该属性,请使用该属性: 请参阅 对枚举成员及其属性 的 编程访问权限 部分 : 如果您有枚举成员并需要其名称或值: 如果只需要提供自定义字符串表示形式,则可以向枚举添加方法: 演示:

  • 我正在使用从以下依赖项导入的Swagger/OpenAPIV3注释创建应用程序的API描述: 其中一个批注是批注,它接受名为的属性,该属性允许字符串数组: 现在,我想使用在枚举类上构造的自定义方法,该方法返回允许的字符串数组,因此不需要在每次向枚举添加类型时添加该方法。以便我们可以这样使用它: 现在这是无法编译的,因为在执行注释时不知道该方法。是否有这样的解决方案允许在SwaggerV3注释属性值

  • 问题内容: 我觉得这是一个简单的问题,但是我尝试过的所有事情都不适合我。我有一个枚举,我有字符串构造函数的原因是因为Java不允许枚举为数字..我在没有字符串构造函数的情况下直接尝试了AA,AB,2C,但这给出了错误。请注意,对于现有的枚举,我要添加C(“ 2C”)。 现在我有一个mybatis映射器,它会进行合并,这是现有的,并且映射器的参数之一是TestEnum。到目前为止,由于枚举值和字符串

  • 我有一个java对象,它有一个名为type的属性,代表一个枚举: 当使用springfox在yaml中生成规范时,该对象在引用对象TypeValue时生成以下输出: 我想做的是在生成doc时忽略枚举类型,从规范中删除枚举类型。这就是我想要的: type:对象属性:op:type:string路径:type:string值:type:对象属性:{}标题:补丁 我尝试使用@ApiModelProper

  • 假设我有一个简单的注释: 和枚举: 我不能这样使用这个注释: 如果说“它必须是一个编译过的时间常数”,这段代码就会失败。我确实理解为什么会发生这种情况,而且我知道JSL中关于编译时间常数的部分。 我的问题是,为什么不按照规范将枚举作为编译时间常数,原因是什么。你不能更改枚举名。。。 库马尔编辑

  • 我的Rest API中有一个字段(在++中实现),它是一组封闭的数值。例如,员工等级,它可以是以下值之一:。而不是,则不能为每个值定义匹配字符串。 我正在尝试获得生成的文档,以便为这些值提供一个数字枚举。我尝试了以下方法: > 使用以下属性定义整数:。没有显示任何枚举,只是在将的类型更改为之后。因此不幸的是,只能与String参数一起工作,而我不希望我的模型是这样的。employeeRank必须是