スプリングがパラメータをバインドする方法にいくつか問題があります。
私のシナリオでは、1つのクエリ引数'q'のみを受け入れるコントローラーメソッドが必要です。
@Controller
@RequestMapping("/home")
public class HomeController {
@RequestMapping
public void test(@RequestParam(value = "q") final String q) {
System.out.println("> " + q);
}
}
ここで、仕様に関して有効なリクエストを送信すると、次のようになります。
GET /home?q=cat
期待どおりの出力が得られます:
> cat
そして、私の仕様では無効であるが、httpリクエストとして有効なままであるリクエストを送信した場合:
GET /home?q=cat&q=black
あいまいで予期しない結果が得られます(なぜ春がそれを行うのかについては考えています...配列のバインドなど:)しかし、それは驚きのままです。):
> cat,black
これらのパラメータは使用できません。無効になる可能性があります。しかし、リクエストを検証する簡単な方法はありません。