質問編集履歴
1
質問後に調査した内容を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,13 +1,21 @@
|
|
1
1
|
事象としては以下のシナリオです。
|
2
2
|
|
3
3
|
1. ユーザー登録画面への入力値がValidationエラーになり登録画面に戻る。エラーとなる項目はage(age=200は範囲外)。
|
4
|
-
|
4
|
+
1. 登録画面へ遷移するためのコントローラメソッドでは、Formの初期値設定を行っている(age=25)。
|
5
|
-
|
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
|
|