Spring Boot

Spring Bootの相関チェックをform内で実行してみた

Spring BootのWEB画面上での相関チェックは、form内で@AssertTrueアノテーションでも実行できることがわかったので、そのサンプルプログラムを共有する。

前提条件

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

Spring Bootでチェック処理にバリデーターを利用してみたこれまでは、Spring BootのWEB画面上での相関チェックをサービスクラスで実装してきたが、特定のFormオブジェクトのチェック処...

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

作成したサンプルプログラムの構成は以下の通り。
サンプルプログラムの構成
なお、上図の赤枠が、前提条件のプログラムから変更したプログラムとなる。また、「DemoFormCheckValidator.java」「SearchFormCheckValidator.java」は不要なので削除している。

フォームクラスの内容はそれぞれ以下の通りで、@AssertTrueアノテーションを付与した、DateCheckUtilクラスを利用した生年月日のチェック処理を追加している。

また、messages.propertiesの内容は以下の通りで、birthYearEmpty・birthMonthEmpty・birthDayEmptyのラベルを追加している。

さらに、入力画面の内容は以下の通り。

「DemoForm.java」で追加した、@AssertTrueアノテーションを付与したチェック処理のエラーメッセージを、生年月日のspanタグに追加し、th:classappendタグにてエラー項目の赤反転処理を追加している。

また、検索画面の内容は以下の通りで、「SearchForm.java」のエラーメッセージ表示・エラー項目赤反転の処理を追加している。

さらに、コントローラクラスの内容は以下の通りで、@InitBinderアノテーションを利用したバリデータの設定処理を削除している。

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

検索ボタンでエラーが発生した場合は、例えば以下のような画面表示となる。
検索画面のエラー表示

また、入力画面でエラーが発生した場合は、例えば以下のような画面表示となる。
入力画面のエラー

下記記事の「完成した画面イメージの共有」と違い、@AssertTrueアノテーションを付与した生年月日のチェックも、他の項目のチェック処理と同じタイミングで実行されることが確認できる。

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

要点まとめ

  • 特定のFormオブジェクトで@AssertTrueアノテーションを付与する形でも、相関チェックを行うことができる。この相関チェックは、同じFormオブジェクト内の他のチェック処理と同じタイミングで実行される。