5

次のコードスニペットを使用する場合:

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です。私が間違っている?この問題を解決するにはどうすればよいですか?

4

2 に答える 2

7

定数URL_HOMEPAGEですが、その値はそうではない場合がありますが、実行時にのみ決定できます。アノテーションで使用される値は、コンパイル時に解決可能でなければならないと思います。

于 2013-01-08T11:35:11.390 に答える
1

これは定数ですが、要求マッピングが初期化された後に初期化されます。呼び出し properties.getProperty("app.homepage"); ているクラスローダーがクラスをロードするとき、URL_HOMEPAGEはまだ初期化されていないため、エラーが発生します。
「/path/subpath」などの初期化された文字列をパラメータとして指定する必要があります

于 2013-01-08T11:21:45.347 に答える