6

RequestMapping で Enum 値を使用する方法はありますか?

@RequestMapping(value = "/example", 
method = RequestMethod.POST)
public final void foo(final HttpServletResponse response,

Enum に既に格納されている URL 値を使用したいと考えています。

ただし、文字列リテラル以外のものを に入れようとすると、コンパイル時にエラーが発生しRequestMappingます。

文字列リテラルと文字列リテラルではない文字列の違いをどのように認識しますか (それが何と呼ばれているかわかりません)。

これは私が試したものですが、コンパイル時に失敗しました:

@RequestMapping(value = FooEnum.Example.getStringValue(), 
method = RequestMethod.POST)
public final void foo(final HttpServletResponse response,

私も使ってみString.formatましたが、それも好きではありません:

@RequestMapping(value = String.format("%s", FooEnum.Example.getStringValue()), 
method = RequestMethod.POST)
public final void foo(final HttpServletResponse response,
4

2 に答える 2

1

注釈が処理されるコンパイル時に既知である必要があるため、注釈属性に割り当てることができるのはリテラル値のみです。はい、「列挙値」が である列挙値を使用できますFooEnum.Exampleが、文字列値を取る属性では使用できず、メソッドを呼び出すことはできません。

于 2011-09-06T04:06:33.183 に答える
0

URL を列挙値に結び付けるのはおかしいように思えます。列挙型を更新しても、URL を変更したくありません。これらの同じ列挙型を使用して実際にクライアント リンクを生成していますか? 代わりに、Spring の Handler Bean に URL を照会することもできますか?

Spring Expression Languageもありますが、 @Value アノテーションで機能することしか知りません。 @RequestMapping についてはわかりません

1 つのメソッドで複数の URL をキャッチしようとしている場合は、@PathVariableを使用できます

于 2012-04-27T22:50:19.543 に答える