Spring のドキュメントから、次のものを取得しました。
public @interface RequestParam
メソッド パラメーターを Web 要求パラメーターにバインドする必要があることを示す注釈。サーブレットおよびポートレット環境のアノテーション付きハンドラー メソッドでサポートされます。
...
メソッド パラメーターが Map または MultiValueMap で、パラメーター名が指定されていない場合、マップ パラメーターにはすべての要求パラメーターの名前と値が入力されます。
これで、テスト用のコントローラーが作成されました。GET メソッドと POST メソッドがあり、それぞれ@RequestParam java.util.Mapを唯一のパラメーターとして使用します。メソッド本体では、マップのサイズのみを印刷しようとしています。GET メソッドでのみリクエスト (GET/POST) を送信すると、マップにキーと値のペアが含まれます。私は Firefox で Poster アドオンを使用しており、3 つのパラメーターを送信しています。
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
@RequestMapping(value="test/method", method = RequestMethod.GET)
@ResponseBody
public String testmethodGet(@RequestParam Map<String, String> params) {
System.out.println("GET: " + params.size()); // prints GET: 3
return "";
}
@RequestMapping(value="test/method", method = RequestMethod.POST)
@ResponseBody
public String testmethodPost(@RequestParam Map<String, String> params) {
System.out.println("POST: " + params.size()); // prints POST: 0
return "";
}
}
@RequestParam Map が POST リクエストで機能しない理由、またはそれを機能させるために何かを変更する必要があるかどうかを知っている人はいますか?
ありがとう。