8

Spring が http リクエストの各パラメータをどのように分割するのか疑問に思っています。例として、私はこのメソッド定義を持っています:

@RequestMapping(value = "/search.do", method = RequestMethod.GET)
public String searchGet(ModelMap model,
    @RequestParam(value = "memberId", required = false) Integer memberId,
    @RequestParam(value = "member", required = false) String member) {...}

そして私はこのURLを使用します:

/search.do?member=T&O=

member = T を取得し、 member =T&O= を取得しない

リクエスト パラメータは、memberId と member のみに制限されています。この問題を解決するために春を設定できますか?

4

3 に答える 3

11

URLの一部の文字には特別な意味があります。それらが値の一部であると想定される場合は、エスケープする必要があります。

値がT&O =の場合は、T%26O%3Dに変更する必要があります

于 2013-03-15T13:27:52.320 に答える
4

&リクエストパラメータを分離するために使用されます。
URL には、リクエスト パラメータの名前と値が次の形式で含まれています

http://host_port_and_url?name1=value1&name2=value2&so_on

あなたの場合

/search.do?member=T&O=  

名前 -> 値
メンバー -> T
O -> (値なし - 空白)
したがって、正しい値が得られます

于 2013-03-15T11:17:50.087 に答える
4

コントローラーのコードを見ると、URL は次のようになっているはずです。

/search.do?memberId=T&member=

その後、リクエスト パラメータ名が正しくマッピングされます。

質問に記載されているのと同じ URL を使用する場合は、コントローラーのコードを次のように変更します。

public String searchGet(ModelMap model,
@RequestParam(value = "O", required = false) Integer memberId,
@RequestParam(value = "member", required = false) String member) {...}
于 2013-03-15T11:18:03.690 に答える