When using the following code snippet:
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";
}
}
I get the following error:
The value for annotation attribute RequestMapping.value must be a constant expression
But in fact, URL_HOMEPAGE
does be a constant, since it is declared as public final static
. Am I wrong? How to solve this issue?
Whilst URL_HOMEPAGE
is a constant it's value may not be, it can only be determined at runtime. I believe that values used in annotations must be resolvable at compile-time.
It is a constant, but it is initialized after the request mapping is initialized.
You are calling properties.getProperty("app.homepage");
When the classloader loads you class, the URL_HOMEPAGE is not initialized yet, hence the error.
You need to give as a parameter an initialized string, such as "/path/subpath"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With