У меня есть простой пружинный контроллер, который в основном возвращает сообщения на основе некоторых параметров запроса.Я получаю параметры запроса, используя аннотацию @Requestparam.Атрибут defaultValue @Requestparam ожидает константное выражение.Вы заметите, что я использую константу, чтобы установить значение параметра.То, что я пытаюсь понять, это то, почему я не могу использовать ниже:
private static final String LONG_MAX_VALUE = Long.toString(Long.MAX_VALUE)
, которое должно вычисляться как постоянная строка, в то время как:
private static final String LONG_MAX_VALUE = "9223372036854775807"
работает как шарм.Обратите внимание, что само значение не имеет значения.Я должен подумать, что оба будут приводить к константному выражению или что мне не хватает?
// simple controller in spring MVC that returns messages based on query parameters
// private static final String LONG_MAX_VALUE = Long.toString(Long.MAX_VALUE);
private static final String LONG_MAX_VALUE = "9223372036854775807";
@GetMapping()
public String getMessages(@RequestParam(name = "max", defaultValue = LONG_MAX_VALUE) Long max,
@RequestParam(name = "count", defaultValue = "20") int count, Model model) {
model.addAttribute("messages", messageRepository.findMessages(max, count));
return "messages";
}
Ошибка, которую я получаю при использовании
private static final String LONG_MAX_VALUE = Long.toString(Long.MAX_VALUE)
,
"Значение атрибута аннотации RequestParam.defaultValue должно быть константным выражением"