【Spring+Thymeleaf】リクエストパラメーターをControllerで受け取る方法

当ページのリンクには広告が含まれています。
目次

概要

Spring+Thymeleafにおいて、リクエストパラメーターをControllerで受け取るパターンを紹介します。

リクエストパラメーターのパターンは以下の通りです。
・単一(inputタグのType=text, number等を想定)
・複数(複数のinputタグ、またはselectタグを想定)
・単一 & 複数(組み合わさったパターン)

実装例

単一(inputタグのType=text, number等を想定)

@RequestParam

@RequestParamでフィールド名を指定してパラメータを受け取る方法です。
リクエストされるパラメータが少ない(1~2個くらいの)画面からのリクエストで使用される印象があります。

HTML

 
Controller

 

@PathVariable

@PathVariableはパスパラメータでリクエストされる場合に使用します。
WebAPIの実装じおいてパスパラメータを指定するケースで使用される印象があります。

リクエスト
curl http://localhost/search/hoge

Controller

他の指定方法と異なり、URLはパラメータを含める構造になっていることに注意すること。
 

複数(複数のinputタグ、またはselectタグを想定)

@RequestParam Map<K, V>

画面から単一(type=text等)のリクエストパラメーターを複数個受け取る場合に使用される印象です。

HTML

Controller

  

@RequestParam(value = “[リクエストパラメータ名]”) String[]

selectタグでmultipleが有効になっている値をリクエストパラメータとして受け取る場合です。
画面からのリクエストで複数条件をパラメータとしたい場合に使用する印象です。

HTML

Controller

 

単一 & 複数(組み合わさったパターン)

@Validated

@Validatedはバリデーションを実行するためのアノテーションですが、リクエストパラメータのマッピングも行ってくれます。
ただし、マッピング用のオブジェクトを準備することが前提なるため、複雑なリクエストパラメータである場合のみ使用する印象です。

HTML

マッピング用オブジェクト(Form)

Controller

 

その他

必須、デフォルト値指定

リクエストパラメータが必須なのか、デフォルト値があるのかを設定することも可能です。
詳しくは以下でまとめられています。
Spring MVC コントローラの引数

 

まとめ

  • リクエストパラメータの複雑さによって、適切な実装をすることが望ましい。
  • パスパラメータの場合はURLの構造でパラメータを指定することに注意する。

最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

リーマンショックの影響で26歳の時にIT業界から離れ、紆余曲折を経て34歳でエンジニアに復帰しました。
復帰前は開発未経験でしたが、独学した知識と面接時のコミュニケーション力で見事開発エンジニアとして復帰しました!
今はフリーランスエンジニアとして仕事をしています。

■保有資格
・Java Gold SE 11

コメント

コメントする

CAPTCHA


目次