私は次のような方法でSpring MVCのコントローラがあります。Spring MVCの - どのように(おそらく@RequestParam属性によって)@RequestMethodメソッドのパラメータのリストを取得する
@RequestMapping(value = {"/filter"}, method = RequestMethod.GET)
@ResponseBody
public List<MetricType> getMetricTypes(
@RequestParam(value = "subject", required = false) Long subjectId,
@RequestParam(value = "area", required = false) Long areaId,
@RequestParam(value = "onlyImmediateChildren", required = false) Boolean onlyImmediateChildren,
@RequestParam(value = "componentGroup", required = false) Long componentGroupId
) throws Exception
{
//Some code
}
はのパラメータのリストを取得することは可能です現在のメソッドはプログラムで(@RequestParamアノテーションなどによって)? ソリューションはデバッグシンボルなしで動作するはずです。 必要に応じてメソッド名をハードコードすることができます。
クエリ文字列に無効なパラメータが含まれているかどうかを確認しようとしています(たとえば、誤植など)。 リクエストのクエリパラメータ名とメソッドシグネチャのクエリパラメータ名(可能な場合)を比較します。
UPDATED
ソリューションは、同様に(偽=必須)オプションのパラメータのために働く必要があります。
感謝
マキシム
なぜあなたはtypo'edパラメータを受け入れるでしょうか?すべてのパラメータは、あなたのウェブアプリケーションと通信しているウェブサイトにハードコードされている可能性が高いです。 – Geerten
私はtypo'edパラメーターを拒否したい。 param名にタイプミスがある場合、エラーメッセージを表示したい。これを行うために、私はユーザが渡したパラメータをメソッドシグネチャと比較したいと思っています –
RequestMappingはtypoされたパラメータを既に拒否しています。比較する利点は何ですか? – Geerten