プログラミング Java

【Spring】バリデーション時に、入力値を保持する方法

投稿日:

登録画面で「登録」ボタンを押した後、
バリデーションで引っ掛かってエラーになっても
入力内容を画面に保持して置く方法
についてです。

テンプレートエンジンは、Tymeleafを使用しています。
方法としては、「th:field」を使って入力したフォームのフィールド名を指定するだけです。

コード

①入力するフォームクラスを、th:object で指定し、
ユーザID(Email)の入力ボックスに、th:field でフィールド名を指定します。

 
②登録時にエラーだった場合、formとmodelを登録画面に戻すようにします。

 

実装後の動作

ユーザID以外の項目がバリデーションエラーになったため登録画面に戻されますが、
ユーザIDに入力した値は保持されています。

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-プログラミング, Java
-,

執筆者:


  1. AO より:

    参考にさせていただいておりますが、質問があります。
    1.inputタグに th:fieldを指定すると500エラーになってしまいます。
    th:objectの名前で作ったFormの項目と合っているのですが、なぜなのでしょう。
    2.画面でDBから取得したプルダウンのリストがあるのですが、この方法でこのリストの保持もできるのでしょうか。
    よろしくお願いいたします。

    • ログログ より:

      AOさん
      コメントありがとうございます。

      >1.inputタグに th:fieldを指定すると500エラーになってしまいます。
      エラーメッセージがわからないので何ともいえませんが、そのフィールドにGetterはついていますでしょうか?
      getUserId()のようなメソッドです。
      th:fieldはGetterを呼び出しているので、そのメソッドが無いとフィールドにアクセスできなくてエラーになることがあります。

      >2.画面でDBから取得したプルダウンのリストがあるのですが、この方法でこのリストの保持もできるのでしょうか。
      私は試したことはないですが、調べたところ参考になる記事があったのでご紹介いたします。
      https://ja.getdocs.org/thymeleaf-select-option/

  2. AO より:

    ご紹介いただいた方法で動きました。有難うございます。
    500エラーはController側でmodelにFormの属性を追加することで解決しました。
    アドバイス有難うございました。
    あとはバリデーション時にプルダウン選択リストを保持できるかどうかですが、
    なにか参考となるものがございましたらご紹介いただければ幸いです。
    よろしくお願いいたします。

    • ログログ より:

      >2.画面でDBから取得したプルダウンのリストがあるのですが、この方法でこのリストの保持もできるのでしょうか。
      私は試したことはないですが、調べたところ参考になる記事があったのでご紹介いたします。
      https://ja.getdocs.org/thymeleaf-select-option/

comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

【Java】SetをStreamで処理する方法 7選!

概要 前回の【Java】ListをStreamで処理する方法 7選!に続き、Set編です。 基本的にListもSetもCollection型であるため、コーディングに大きな差はありません。 気を付ける …

junit, テスト, junit5

【Junit5】アノテーションの意味をざっくりと解説

Junit5のアノテーションについてざっくりと理解するための記事です。 なんか見たことあるけど、要するに何に使うやつなんだっけ? を軽く思い出すためにあります。 テストを実行 @Test テストメソッ …

Eclipseでタブを半角スペースに変換する便利プラグイン!

Eclipseでタブを半角スペースに変換する便利プラグインに、 AnyEdit Toolsというものがあります。 導入方法を以下に記載致しましたので参考にして下さい。   どういうものか? …

junit, テスト, junit5

【JUnit5】テストコードの基本

概要 JUnit5でテストコードを書く基本について学ぶ。 テストの命名規則 テストクラス、テストメソッドの記述には一般的な慣例があります。 ここではそれらを紹介しますが、実際にはプロジェクト内でのコー …

【JPA】リレーションの無いエンティティをJPQLで結合する

概要 @ManyToOneや@OneToManyといったリレーションをエンティティに設定していないまたは設定できない状況にあるが、結合した結果を取得したいという状況を想定しています。 方法としては「J …

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。