注释属性RequestMapping.value的值必须是常量表达式

时间:2013-01-08 11:13:12

标签: java spring-mvc url-routing

使用以下代码段时:

public class MyUrls {

    // properties get initialized using static{...}
    public final static String URL_HOMEPAGE = properties.getProperty("app.homepage");    

}

@Controller
public class HomepageController {

    @RequestMapping(MyUrls.URL_HOMEPAGE)
    public String homepage() {
        return "/homepage/index";
    }

}

我收到以下错误:

The value for annotation attribute RequestMapping.value must be a constant expression

但事实上,URL_HOMEPAGE确实是常量,因为它被声明为public final static。我错了吗?如何解决这个问题?

2 个答案:

答案 0 :(得分:7)

虽然URL_HOMEPAGE是常量,但它的值可能不是,它只能在运行时确定。我相信注释中使用的值必须在编译时可以解析。

答案 1 :(得分:1)

它是一个常量,但在初始化请求映射后初始化。 你在呼叫 properties.getProperty("app.homepage"); 当类加载器加载您的类时,URL_HOMEPAGE尚未初始化,因此错误 您需要将初始化字符串作为参数提供,例如“/ path / subpath”