【问题标题】:Spring controller Path not being considered a constant弹簧控制器路径不被视为常数
【发布时间】:2019-06-25 08:36:39
【问题描述】:

我想用一个路径变量定义一个 Spring 的控制器路径:

private static final String IDS_REGEX = "[" + EnumSet.allOf(MyIdsEnum.class).stream().map(MyIdsEnum.class::getValue)
  .collect(Collectors.joining("|")) + "]";
public static final String MY_PATH = "/path/{id:" + IDS_REGEX + "]}";

然后在我的控制器中:

 @PostMapping(value = MY_PATH, produces = MediaType.APPLICATION_JSON_VALUE)

但是,IntelliJ 在 PostMapping 值中抛出错误:

Attribute value must be constant

路径已经是 static final 了,我应该怎么做才能把它变成一个常量?

提前致谢

【问题讨论】:

标签: java spring spring-boot controller constants


【解决方案1】:

它必须是编译时间常数。

编译时常量表达式是表示原始类型值或字符串的表达式,它不会突然完成并且仅使用以下内容组成:

  • 原始类型的文字和字符串类型的文字
  • 转换为基本类型和转换为字符串类型
  • [...] 运算符 [...]
  • 带括号的表达式,其包含的表达式是常量表达式。
  • 引用常量变量的简单名称。
  • TypeName 形式的限定名称。引用常量变量的标识符。

【讨论】:

    猜你喜欢
    • 2014-07-16
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2014-08-27
    相关资源
    最近更新 更多