2013-01-08 102 views
4

当使用下面的代码片段:用于注释属性RequestMapping.value值必须是常量表达式

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。我错了吗?如何解决这个问题?

回答

7

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

1

它是一个常数,但是在请求映射初始化后被初始化。 您正在致电properties.getProperty("app.homepage"); 当类加载器加载您的类时,URL_HOMEPAGE尚未初始化,因此是错误。
你需要给作为参数初始化的字符串,如“/路径/子路径”

相关问题