Spring Boot チェック処理

Spring BootのWEB画面上でチェック処理を実装してみた(ソースコード編)

今回も、引き続きチェック処理を含むそのサンプルプログラムについて共有する。前回は、サンプルプログラムの完成イメージについて記載していたが、今回は、具体的なサンプルプログラムのソースコードを共有する。

前提条件

以下の記事の複数画面をもつSpring BootのWEB画面用アプリが作成済であること。

複数画面をもつSpring BootのWEBアプリケーションを作成してみた今回は、入力画面・確認画面・完了画面の3画面を含み、HTMLオブジェクトとしてテキストボックス・セレクトボックス・ラジオボタン・チェック...

また、以下の記事のプロパティファイルの日本語許可設定が終了していること。今回のサンプルプログラムの完成イメージも、以下の記事を参照のこと。

Spring BootのWEB画面上でチェック処理を実装してみた(完成イメージ編)今回は、以前作成した、入力画面・確認画面・完了画面の3画面を含み、HTMLオブジェクトとしてテキストボックス・セレクトボックス・ラジオボ...

 

作成したサンプルプログラムの内容

作成したサンプルプログラムの構成は以下の通り。
チェック処理を行うプログラムの構成

チェック処理のアノテーションは、「DemoForm.java」の名前・性別・確認チェックに「@NotEmpty」アノテーションを付与している。そのプログラムの内容は以下の通り。



また、アノテーションで実現できないチェック処理は、「DemoController.java」のconfirmメソッド, sendメソッド内で実施している。そのプログラムの内容は以下の通り。

上記「confirm」「send」メソッドでは、まず、DemoForm.javaのアノテーションによるチェックを行えるよう、引数のdemoFormに「@Validated」アノテーションを付与している。また、アノテーション以外のチェック処理は「checkOthers」メソッドにて実施している。

エラーの場合は、BindingResultクラスのrejectValueメソッドで、エラーメッセージと(エラー時に赤反転するための)エラ-フィールドの設定を行っている。さらに、エラーの場合と正常な場合で、画面遷移先を変更している。

なお、確認画面でもチェック処理を行っているのは、デベロッパーツールで裏からデータを書き換えられた場合に備えるためである。

エラーメッセージは、「messages.properties」にて実施している。その内容は以下の通りで、独自の日付チェックのメッセージと、DemoForm.javaのアノテーションのメッセージ(javax.validation.constraints.NotEmpty.message)の両方を含んでいる。さらに、エラーメッセージ{0}に埋め込むフィールド名も、ここで定義している。



DemoForm.javaのアノテーションのメッセージは、通常、Spring Bootのデフォルトの「ValidationMessages.properties」で定義するが、この定義を「application.properties」に変更することもできる。その変更は、下記「DemoApplication.java」にて実施している。そのプログラムの内容は以下の通り。

さらに、日付チェック処理は、下記「DateCheckUtil.java」にて実施している。これは前出の「DemoController.java」内のcheckDateメソッドから呼び出される。



また、入力チェックを行いエラーがあった場合にエラーメッセージを表示し、赤反転するエラ-フィールドは、下記「input.html」にて実施している。それぞれのフィールドに関するエラーメッセージの表示はspanタグにて実施している。さらに、エラーフィールドを赤反転する処理は、それぞれのth:fieldタグとth:errorclassタグにて実施している。

また、エラーメッセージ・エラーフィールドの色は、下記「demo.css」にて定義している。

さらに、「confirm.html」の内容は以下の通りで、ここでは「送信」「戻る」の各ボタンにnameタグが定義されていて、「送信」ボタンが押下された場合は「DemoController.java」の「params = “next”」が付与されているメソッド(sendメソッド)が、「戻る」ボタンが押下された場合は「DemoController.java」の「params = “back”」が付与されているメソッド(backメソッド)が呼ばれるようになっている。

その他、「complete.html」「application.properties」の内容は以下の通り。

その他のソースコード内容は、以下のサイトを参照のこと。
https://github.com/purin-it/java/tree/master/spring-boot-web-check2/demo

また、その他のチェック用アノテーションを利用した場合の実装方法は、下記サイトが参考になる。
https://www.tuyano.com/index3?id=6209570301018112&page=5

要点まとめ

  • チェック処理は、formオブジェクトのアノテーションや、コントローラクラス上での独自実装によって行える。また、formオブジェクトのアノテーションは、「@Valid」アノテーションで有効化される。
  • エラーメッセージは、th:errorsタグで表示する。また、HTMLファイル上で各フォームの色を変更するには、th:fieldタグとth:errorclassタグを利用する。
  • エラーメッセージは、SpringBoot起動用クラスに所定の処理を記述することで、「application.properties」に変更できる。
  • 同一アクション内でsubmit処理を複数に分けるには、HTMLファイル上でnameタグを、コントローラクラス上でparams属性を利用する。