プログラミング 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


関連記事

【Laravel】SQLの確認はenableQueryLogを使う

SQLのデバッグのために、SQLとバインドされた値を確認したいことがあります。 その時に使える方法として、よく提示されるのは以下の2つです。 1.enableQueryLogメソッドとgetQuery …

【Java入門】インターフェースの使い方まとめ

概要 インターフェースとは、内部実装を知る必要なく、利用する機能の接点のみを提供する仕組みです。 接点をソフトウェア的にいうと、メソッドのシグネチャと戻り値の型に当たります。 つまり、どんなメソッドに …

【Java】MySQLから取得した日付をフォーマット変換して表示する方法

MySQLからSELECTしてきた日付データ(DateTime型)を、 「yyyy年MM月dd日 hh時mm分ss秒」のフォーマットで表示する方法です。 コード [crayon-6170c77b411 …

【JdbcTemplate】IN句に値を入れて複数件取得する方法

JdbcTemplateでIN句に毎回異なる数の値をセットして、 複数のレコードを取得する場合は、「NamedParameterJdbcTemplate」で取得することができます。 コード例 [cra …

プログラミングスキルを向上させる3ステップ

プログラミングスキルを向上させるための3ステップです。 私自身が実践していることであり、向上を実感している方法です。 写経 本をベースに写経します。 写し書きをして動いたらOKではなく、以下のような問 …

記事を探す

SpringFramworkの良書

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

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