12

パラメータが次のようになっている場合、私はそれを知っています:

@RequestParam("userId") String userId

これを呼び出すことで値を取得できます:

requestParam.value()

しかし、名前を指定しない場合、Spring は自動的に変数名を使用します。このような:

@RequestParam String userId

パラメータ名が指定されていない場合、どうすればアクセスできますか? Springが何らかの形でそれを行うので、私はそれが可能であることを知っていますが、この場合 requestParam.value() は空白です。

4

4 に答える 4

9

Spring は、@RequestParam に基づいてリクエストを設定しません。代わりに、@RequestParam で注釈が付けられたメソッド引数を入力します (@RequestMapping で注釈が付けられたメソッド内)。@RequestParam アノテーションに指定されたパラメーターは、その引数として使用する要求パラメーターの名前を Spring に伝えます。指定しない場合、Spring はデフォルトで引数の名前を使用します (したがって、質問で指定した 2 つの例は同等です)。

リクエスト パラメータにアクセスしようとしている場合は、使用しているフレームワークに関係なく、その名前を知っている必要があります。

于 2012-12-16T23:11:52.300 に答える
4

そのようにしないことをお勧めします。Spring はasmを使用 して Java バイトコード ファイルを分析し、メソッドのパラメーター名を抽出します。コンパイラ オプションに依存します。

于 2012-12-17T02:36:55.680 に答える
3

Java 8 の場合、Spring はJava 8 パラメータ APIに依存するStandardReflectionParameterNameDiscovererを使用します。

パラメータ オプションを設定してリフレクション経由で使用する方法の詳細については、この回答を参照してください。

于 2016-09-01T12:14:22.477 に答える
0

userIdのように を呼び出すだけdoSomething(userId)です。春はあなたのためにすべてを結びつけます。

于 2012-12-16T23:08:41.217 に答える