開始行: * キーワード [#hb8e67b5] - Spring Boot - 入力チェック * したいこと [#nea49007] データベース上のデータと突き合わせてテストしたい。 &color(red){-- 2018/02/14 追記}; BindingResultをサービスにまで持っていくのはよくない気がす... - 本編の処理の中でサービスとして実装した突合チェックを呼... - 突合チェックはエラーなら例外を投げるようにする。 - controllerでそれを拾ってBindingResultにrejectValueする のがいいんじゃないかな。 ああ、そうそう、単項目チェックと突合チェックを同時にフィ... &color(red){-- 追記おわり}; * どうやって [#a0da48cc] - アプリケーションサービスとして実装する のがいいんじゃないかと思う。 @Service public class UserPasswordCheck { @Transactional(readOnly=true) public void checkCurrentPassword( BindingResult result, String field, Password currentPassword, User user ) { if (result.hasFieldErrors(field)) return; boolean isPass = user.getEncryptedPassword().isSame(cu... if (! isPass) result.rejectValue(field, メッセージキー); } } Controller側では次のようにする想定。 // result: ハンドラの引数にするBindingResult // "currentPassword": 項目名 // newPassword: 入力の値 // user: ログインユーザー userPasswordCheck.checkCurrentPassword(result, "currentP... if (result.hasErrors()) return 入力ページのテンプレート; * ノート [#q9c3e643] Service側でresult.hasFieldErrors(field)するのは、 - 単項目チェックと相関項目チェックをパスした場合だけチェ... if (result.hasErros())の前にServiceを呼ぶのは、 - 突合チェックと他の項目の単項目チェックと相関項目チェッ... * 参考 [#o6f27385] - [[Spring Boot/相関項目チェックする]] 終了行: * キーワード [#hb8e67b5] - Spring Boot - 入力チェック * したいこと [#nea49007] データベース上のデータと突き合わせてテストしたい。 &color(red){-- 2018/02/14 追記}; BindingResultをサービスにまで持っていくのはよくない気がす... - 本編の処理の中でサービスとして実装した突合チェックを呼... - 突合チェックはエラーなら例外を投げるようにする。 - controllerでそれを拾ってBindingResultにrejectValueする のがいいんじゃないかな。 ああ、そうそう、単項目チェックと突合チェックを同時にフィ... &color(red){-- 追記おわり}; * どうやって [#a0da48cc] - アプリケーションサービスとして実装する のがいいんじゃないかと思う。 @Service public class UserPasswordCheck { @Transactional(readOnly=true) public void checkCurrentPassword( BindingResult result, String field, Password currentPassword, User user ) { if (result.hasFieldErrors(field)) return; boolean isPass = user.getEncryptedPassword().isSame(cu... if (! isPass) result.rejectValue(field, メッセージキー); } } Controller側では次のようにする想定。 // result: ハンドラの引数にするBindingResult // "currentPassword": 項目名 // newPassword: 入力の値 // user: ログインユーザー userPasswordCheck.checkCurrentPassword(result, "currentP... if (result.hasErrors()) return 入力ページのテンプレート; * ノート [#q9c3e643] Service側でresult.hasFieldErrors(field)するのは、 - 単項目チェックと相関項目チェックをパスした場合だけチェ... if (result.hasErros())の前にServiceを呼ぶのは、 - 突合チェックと他の項目の単項目チェックと相関項目チェッ... * 参考 [#o6f27385] - [[Spring Boot/相関項目チェックする]] ページ名: