☆やりたいこと
登録画面で必須入力のバリデーションを実装したかった
コントローラークラスの引数に、Binding resultを書く。
Binding result とは、
フォームのデータ検証結果を保持するオブジェクトのこと。
// メッセージのリストを作成して、エラーや確認メッセージを格納する準備をする
List messageList = new ArrayList<>();
// フォームから受け取ったデータを使って、同じかどうかをチェックするメソッドを呼び出し、その結果をメッセージリストに追加する
messageList.add(checkIfSame(request.getFirstAprv1(), request.getFirstAprv2(), request.getFirstAprv3()));
// メッセージリスト内の全てのメッセージが「null(何もない)」かどうかを調べる
boolean allNull = messageList.stream().allMatch(Objects::isNull);
// バリデーションエラーがあるか、またはメッセージリストに何かメッセージが入っている場合
if (result.hasErrors() || !allNull) {
// リクエストオブジェクトにメッセージリストをセットして、エラーがある場合はフォームページに戻る
request.setMessageList(messageList);
return "approver-setting";
}
BindingResultは、プログラムでフォームから入力されるデータ(例えば、ユーザー名やメールアドレスなど)を受け取る際に、そのデータの正しさやエラーをチェックするための道具です。ゲームのスコア用紙のように、入力されたデータが正しいかどうかを確認し、もし間違いがあればそれを教えてくれる役割があります。
具体的には、BindingResultはフォームから送信されたデータを受け取り、それが期待通りの形式や範囲になっているかを確認します。もし問題があれば、その情報をプログラムに伝え、適切な対処ができるようにします。例えば、メールアドレスが正しい形式で入力されているか、必須項目が埋められているかなどをチェックするのに使われます。
簡単に言うと、BindingResultはプログラムが受け取ったデータが正しいかどうかをチェックする、データの検査係のようなものです。間違いや問題があればそれを教えてくれ、プログラムがスムーズに動くように手助けしてくれる大切な部品です。