特殊文字を処理する場合の と@RequestParam
の違いは何ですか?@PathVariable
+
@RequestParam
スペースとして受け入れられました。
の場合@PathVariable
、+
は として受け入れられました+
。
ベストアンサー1
@PathVariable
URIからプレースホルダーを取得することです(SpringではURIテンプレートと呼びます)—Spring リファレンス 16.3.2.2 URI テンプレート パターン@RequestParam
URIからもパラメータを取得する方法もあります。Spring リファレンス 16.3.3.3 @RequestParam を使用してリクエスト パラメータをメソッド パラメータにバインドする
URL がhttp://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013
2013 年 12 月 5 日のユーザー 1234 の請求書を取得する場合、コントローラー メソッドは次のようになります。
@RequestMapping(value="/user/{userId}/invoices", method = RequestMethod.GET)
public List<Invoice> listUsersInvoices(
@PathVariable("userId") int user,
@RequestParam(value = "date", required = false) Date dateOrNull) {
...
}
また、リクエストパラメータはオプションであり、Spring 4.3.3以降ではパス変数もオプションとなる。オプションとしても使用可能ただし、URL パスの階層が変更され、リクエスト マッピングの競合が発生する可能性があるので注意してください。たとえば、/user/invoices
ユーザーの請求書null
や、ID が「invoices」のユーザーの詳細が提供されるでしょうか?