我想使用路径变量定义 Spring 的 Controller 路径:
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 + "]}";
然后在我的 Controller 中:
@PostMapping(value = MY_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
但是,IntelliJ 在 PostMapping 值中抛出错误:
Attribute value must be constant
路径已经是静态最终的,我应该怎样做才能将其变成常量?
提前致谢
最佳答案
它必须是一个编译时常量。
编译时常量表达式是表示基本类型值或不会突然完成的字符串的表达式,并且仅使用以下内容组成:
- 原始类型的文字和 String 类型的文字
- 转换为原始类型并转换为 String 类型
- [...]运算符[...]
- 带括号的表达式,其包含的表达式是常量表达式。
- 引用常量变量的简单名称。
- TypeName 形式的限定名称。引用常量变量的标识符。
关于java - Spring Controller 路径不被视为常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56749939/