プログラミング Java

ModelからBindingResultが消える原因と対処方法

投稿日:

環境

Java(SpringFramework)
Thymeleaf

状況

更新画面でバリデーションエラーにより更新が失敗したというようなケースにおいて、
BuindingResultにFormのエラーを格納して更新画面に戻したが、BuindingResultのエラーが画面に表示されない。
 

原因

BindingResultはModelに保持されており、保持しているAttributeNameと同じもので上書きされることで消えてしまいます。

以下はエラー時にModelに保持している情報の一部(hogeFormに3つのエラーがあったことを示しています)。
{hogeForm=HogeForm(cd=1, name=, unitPrice=null, version=0), org.springframework.validation.BindingResult.hogeForm=org.springframework.validation.BeanPropertyBindingResult: 3 errors

このModelを更新画面に戻す際に、hogeFormを上書きすることでエラーが消えてしまいます。
以下は、DBから取得した結果をViewに渡そうとして上書いてしまった例です。

model.addAttribute(“hogeForm”, hogeForm) としている部分で、hogeFormが上書きされてエラーが消えてしまいます。
{materialForm=MaterialForm(cd=1, name=1, unitPrice=1, version=0)}

私の場合、
更新画面を表示するメソッド(DBから取得したデータをFormに格納して表示)を、
エラー時に戻す際にも利用してしまったために起こりました。(凡ミス)
 

対処方法

エラーで更新画面に戻す場合、POSTされたFormの値を戻すようにすることで解消しました。
(editFormメソッド)

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

ランキング評価する

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

執筆者:


comment

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

CAPTCHA


関連記事

2進数を使うと判定がシンプルになる!(じゃんけんプログラム編)

概要 仕事で2進数を使った判定処理について学んだので共有したくて執筆しました。 仕事上で設計したロジックは本記事で紹介するものより複雑でしたが、本質的な部分は変わらないので使って頂けると思います。 説 …

【Java入門】クラスとインスタンスの違いを分かり易い言葉で説明します。

概要 クラスとインスタンスの違いについて、できるだけ分かり易い言葉や表現で説明します。   クラス 設計書だよ。 以上です。 ほんとマジで。 どんなデータと操作が可能かを決めているだけなので設計書と表 …

【Java入門】例外処理の基本的な操作まとめ

概要 例外処理の基本的な知識と操作について記載しています。 例外処理の構文 try~catch~finally ◆基本構文

・fina …

【Java入門】配列の扱い方まとめ

概要 配列の扱い方について学んでいきましょう。 配列は、同一の型の値を複数持つことができるデータ構造です。 ・int型の配列だったら、int(数値)を複数個持っている。 ・String型の配列だったら …

no image

GitでIndexが壊れたときの直し方

これは自分の環境用の備忘録です。 (状況) Virtual BOX内のGit環境において、INDEXが0KBになっている。(INDEXが壊れている) (対処方法) リモート環境から新しくCloneして …

SpringFramworkの良書

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

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