Spring Boot 基本

Flash Scopeでリダイレクト先にパラメータを渡してみた

Flash Scopeを利用すると、セッションを使わなくてもリダイレクト先にパラメータを渡すことができる。また、リダイレクト終了後に、Flash Scopeで渡したパラメータが自動的に削除されるため、セッションの場合と違い、終了後にパラメータを削除する処理は不要となる。

今回は、Flash Scopeを利用してリダイレクト先にパラメータを渡してみたので、そのサンプルプログラムを共有する。

前提条件

下記記事の実装が完了していること。

IntelliJ IDEA上でGradleを使ってWeb画面のSpring Bootプロジェクトを作成してみたSpring Bootのプロジェクトを新規作成を「IntelliJ IDEA」のメニューから実施しようとしたところ、無料の「Commun...

サンプルプログラムの作成

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上記の赤枠は、前提条件のプログラムから変更したプログラムである。

コントローラクラスの内容は以下の通りで、リダイレクト遷移するconfirmメソッド内で、FormオブジェクトをFlash Scopeで渡している。また、リダイレクト後のconfirm_redirectメソッド・completeメソッドで、FormオブジェクトをFlash Scopeから取得している。



また、確認画面のHTMLファイルの内容は以下の通りで、FormオブジェクトをFlash Scopeから取得し表示している。



その他、入力画面・完了画面のHTMLファイルの内容は以下の通り。



また、Formクラスの内容は以下の通り。

さらに、build.gradleの内容は以下の通りで、Lombokを利用できるようにしている。



サンプルプログラムの実行結果

サンプルプログラムの実行結果は、以下の通り。

1) Spring Bootアプリケーションを起動し、「http:// (ホスト名):(ポート番号)」とアクセスすると、以下の画面が表示される
サンプルプログラムの実行_1

2) 名前・メモを入力し「確認」ボタンを押下
サンプルプログラムの実行_2

3) 以下のように、確認画面に遷移することが確認できる
サンプルプログラムの実行_3

4) このときのコンソールログの内容は以下の通りで、confirm_redirectメソッドで、FormオブジェクトをFlash Scopeから取得できることが確認できる
サンプルプログラムの実行_4

5) 「登録」ボタンを押下
サンプルプログラムの実行_5

6) 以下のように、完了画面に遷移することが確認できる
サンプルプログラムの実行_6

7) このときのコンソールログの内容は以下の通りで、completeメソッドで、Flash ScopeのFormオブジェクトがクリアされていることが確認できる
サンプルプログラムの実行_7

要点まとめ

  • FlashScopeを利用すると、リダイレクト先にパラメータを渡すことができる。また、リダイレクト終了後に、Flash Scopeで渡したパラメータが自動的に削除される。
  • FlashScopeでパラメータを渡すには、RedirectAttributesクラスのaddFlashAttributeメソッドを利用すればよい。
  • FlashScopeで渡したパラメータは、Modelクラスで取得できる。