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

@RequestParam defaultvalue不接受枚举值作为默认值

田玉韵
2023-03-14

我正在使用spring rest控制器。

这是代码。

@RequestParam(value = "status", required = false, defaultValue = StatusEnum.STATUS.toString())

如果我使用枚举作为defaultValue我得到注释属性的值Request estParam.defaultValue必须是一个常量表达式。

根据我的理解,它应该接受enum作为默认值。

请给出建议。

共有2个答案

闻人河
2023-03-14

避免字符串出现在不同位置的一种解决方法是使用类似的方法

public enum StatusEnum {
    STATUS();
    
    public class Names {
       public static final String STATUS = "STATUS";
    }
    
 }

在查询参数中

@RequestParam(value = "status", required = false, defaultValue = StatusEnum.Names.STATUS)
王波
2023-03-14

因为它必须是一个字符串,并且必须是一个常量表达式,所以这里唯一的实际选择是使用适用于枚举的值。valueOf(),因为这就是最终解决问题的方法。

具体来说,你应该阅读

@RequestParam(value = "status", required = false, defaultValue = "STATUS")

当然,假设“STATUS”是StatusEnum的字符串值。状态。

 类似资料:
  • 问题内容: 我们有一个带有枚举字段-的实体,我们想使用JPA注释-为它设置默认值。 但是,当我们将实体保存到数据库时,此字段的值为和。对于布尔字段- 正确的默认值()已保存。 如果改为使用:,则会在保存时得到以下异常: 我们做错了什么?为什么它仅适用于布尔值? 问题答案: 当某些SQL代码在未为emailCommunicationStatus列指定任何值的情况下插入一行时,您所做的工作很有用。在这

  • 问题内容: 通常,在switch语句中不需要默认值。但是,在以下情况下,仅当我取消注释默认语句时,代码才能成功编译。有人可以解释为什么吗? 问题答案: 您必须取消注释的原因是您的函数说它返回一个,但是如果您只为定义了标签,那么如果您传入其他任何内容,该函数将不会返回值。Java要求所有声明它们返回值的函数实际上在所有可能的控制路径上都返回一个值,并且在您的情况下,编译器不确信所有可能的输入都返回了

  • 问题内容: 假设我有一个枚举,然后实例化一个天数组。 如何将一天(例如)设置为所有“天”的默认值?如果如上所述进行设置,则所有元素均为空。我希望通过枚举表现得更像ints和Strings,它们分别初始化为0和“”。 问题答案: 正如其他人所说,枚举是引用类型-它们只是特定类的编译器语法糖。JVM不了解它们。这意味着该类型的默认值为null。当然,这不仅会影响数组- 这意味着类型为枚举的任何字段的初

  • 我的api如下所示: 对于查询,我们只想允许查询枚举中列出的某些属性,如下所示: 我加了 在启动阶段。cs,但这不适用于默认值,我得到以下生成的虚张声势,默认值为0而不是字符串: 如何使默认值显示为字符串?

  • 因此,我进入了这个新的Spring Boot项目,该项目已经在开发中,在编写API时,我在我的控制器中使用了Enum作为RequestParam。 我没有为此编写任何转换器。 后来我注意到,在这个项目中,其他开发人员已经为此编写了自定义转换器。 所以我决定在网上搜索关于这个和所有的解决方案,出现了使用与在Spring Boot中使用的转换器,找不到任何没有转换器的例子,就像我做的那样。 下面是我写

  • 枚举具有名为'hash value'的属性,该属性是枚举内的索引。