GET時のリクエストパラメータの受取方法と画面遷移のやり方を確認してみます。
STS3(3.9.6)+SpringBoot2.0+Tymeleaf3.0迄動作確認しています。
パラメータの受取
hello.html を想定して、/localhost:8080/hello?msg=TEST のパラメータ付URLを渡してみます。
コントローラクラスで定義
ソースはこんな感じ。
@Controller
public class SampleController {@RequestMapping("/hello")
public String hello(@RequestParam(defaultValue = "NOT PARAM") String msg,Model model) {
model.addAttribute("msg", msg);
return "hello";
}}
@RequestParamアノテーションを使って受け取るパラメータを指定します。
上記の例だと、パラメータが「?msg=TEST」なので、受け取る変数は「String msg」としています。
パラメータで受け取ったmsgを、確認用に画面に渡します。
model.addAttribute("msg", msg);
リクエストパラメータの名前と受け取る変数の名前が一致していれば、自動的にマッピングしてくれます。
ただ。
単に「@RequestParam String msg」とする方法だと、msgパラメータが指定されていないと例外になります。
なので。
デフォルト値を指定しておくか、
パラメータが指定されていない場合に例外が発生しないようにします。
デフォルト値を指定するパターンの例です。
defaultValueを使います。
public String hello(@RequestParam(defaultValue = "NOT PARAM") String msg,Model model)
未指定でも例外にならない方の例
こちらは未指定でも例外にならないようにするだけの例です。
requiredを使います。
public String hello(@RequestParam(required = false) String msg,Model model)
動作確認
確認用のHTMLです。
<p class="msg" th:text="${msg}" />
実行してみます。
「/localhost:8080/hello?msg=TEST」のURLの時
パラメータなし「/localhost:8080/hello」のURLの時
いけたみたいです。
STS+Spring Boot +thymeleaf 関連記事
入力画面に関連する記事
参照画面・画面遷移に関連する記事
参照画面:テーブルを使い、行毎に色分けした一覧表を表示する。
入力チェックに関連する記事
入力チェック:@Patternと正規表現で独自チェックする。
入力チェック用アノテーション定義を自分で作る。(独自実装版)
データアクセス・その他に関連する記事