使用常量表达式设置注释属性

时间:2019-06-18 14:51:33

标签: java spring-mvc constant-expression

我有一个简单的spring控制器,它基本上根据一些查询参数返回消息。我使用@Requestparam批注获取查询参数。 @Requestparam的defaultValue属性需要一个常量表达式。您会注意到,我使用常量来设置参数值。我想了解的是为什么我不能在下面使用:

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的值必须为常量表达式”

0 个答案:

没有答案