27

我正在使用弹簧休息控制器。

这是代码。

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

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

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

请指教。

4

2 回答 2

29

由于它必须是一个字符串,并且它必须是一个常量表达式,因此您唯一真正的选择是使用适用于 的值Enum.valueOf(),因为这就是最终解决问题的方式。

具体来说,您应该阅读

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

当然,假设这"STATUS"StatusEnum.STATUS.

于 2013-11-21T02:17:35.363 回答
0

避免在不同位置使用字符串的解决方法是使用类似的东西

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

在查询参数中

@RequestParam(value = "status", required = false, defaultValue = StatusEnum.Names.STATUS)
于 2021-12-03T14:26:11.183 回答