質問編集履歴

1

質問後に調査した内容を追記しました。

2022/05/19 09:32

投稿

yokota101010
yokota101010

スコア14

test CHANGED
File without changes
test CHANGED
@@ -1,13 +1,21 @@
1
1
  事象としては以下のシナリオです。
2
2
 
3
3
  1. ユーザー登録画面への入力値がValidationエラーになり登録画面に戻る。エラーとなる項目はage(age=200は範囲外)。
4
- 2. 登録画面へ遷移するためのコントローラメソッドでは、Formの初期値設定を行っている(age=25)。
4
+ 1. 登録画面へ遷移するためのコントローラメソッドでは、Formの初期値設定を行っている(age=25)。
5
- 3. 再び登録画面を表示するが、年齢欄には設定し直した25ではなく200が表示されている(**ここが疑問点**)。
5
+ 1. 再び登録画面を表示するが、年齢欄には設定し直した25ではなく200が表示されている(**ここが疑問点**)。
6
6
 
7
7
  項番2で再び初期値(25)を設定しているので、その後に表示する画面では初期値(25)が表示されるかと思いきや、遷移元の画面入力値(200)が保持されていて表示されました。この理由が分からず混乱しています。
8
8
 
9
9
  キャッシュが残っている系の原因を想像しましたが解決できず、ご教授頂きたいです。
10
10
  よろしくお願い致します。
11
+
12
+ ***
13
+ **※2022/05/19追記**
14
+ 色々と試してみた内容を追記します。要点は2点あります。
15
+ 1. エラーではない項目は、コントローラで値を再設定することで画面にも再設定後の値が表示された。
16
+ 1. デバッガを使用して、`model`の`bindingResult`に含まれる`rejectedValue`の値を書き換えたら、画面にも書き換え後の値が反映された。
17
+ このことから、エラーを起こした項目については`model.form`の値ではなく`model.bindingResult`の値を使ってHTMLをレンダリングするらしいことが分かりました。もしも、この辺りの情報が公式ドキュメントなどに書いてあるなど、関連情報をお持ちの方がいらっしゃったら、引き続き教えて頂きたいと思っています。追加情報が無さそうであれば、様子を見て自己解決にしようと思います。
18
+ ***
11
19
 
12
20
  以下に関連するコードを抜粋します。
13
21