2

Spring(3.1)マッピングの難問に直面しています:単純なfindAllメソッドがあります:

@RequestMapping( method = RequestMethod.GET )
@ResponseBody
public List< User > findAll(){
    return findAllInternal();
}

これは次のURIにマップされます(これは良いことです)/user:。

ただし、次のマップにも適用されます/user?bla=8。これは適切ではありません。

この特定のマッピングにパラメーターが含まれていないという事実を明示的に指定する方法はありますか?で指定しようとしparamsました@RequestMappingが、これを行う明確な方法がわかりません。

どんな助けでも大歓迎です。

ありがとう。ユーゲン。

4

1 に答える 1

1

@RequestMapping.param属性のパラメーターを無効にすることができます。

@RequestMapping( method = RequestMethod.GET, params = "!bla")

Spring 3.1以降、リクエストにパラメータを含めることを明示的に禁止することはできません。

しかし、正直なところ、それが必要になることはめったにありません。

3つのユースケースがあります。

  1. blaは、明示的に許可/禁止できる既知のパラメータです。
  2. blaは不明なパラメータであり、無視できます。
  3. 不明なパラメータを持つリクエストを特別な方法で処理したい(たとえば、エラーをスローする)。

最初の2つは、SpringMVCで実行できます。3番目のAFAIKはできません。

3番目のオプションも、クライアントがサーバーに送信できるパラメーター(セキュリティフレームワークによって追加されたものなど)に細心の注意を払う必要があるため、潜在的に危険です。

于 2012-07-02T13:07:16.523 に答える