いまのバリデーションはアクションメソッドの呼出しをフックしてバリデーションをかけていますが、これを「バインド前」と「バインド後」に分けて、指定した方でバリデーションするようにしたいです。
たとえば、TODOアプリのLoginActionのバリデーションは
- リクエストパラメータのバインド
- リクエストパラメータ(userIdとpassword)のバリデーションとユーザーの存在チェック、エラーならエラーページへ
という動きになっています。
エラーの出方を考えると、まず - userIdとpasswordのバリデーション、エラーならエラーページへ
というリクエストパラメータのバリデーションがあって、そこでエラーがなければ - リクエストパラメータのバインド
- 指定されたユーザーの存在チェック、エラーならエラーページへ
という順番で動くのが妥当かと思います。
以下のような方法で指定できるといいかと思っています。
DefaultValidationRulesの
- addメソッド(引数 Validator)
- リクエストパラメータのバリデーションなので、タイミングは「バインド前」だけでよさそう。
- addメソッド(引数 ValidationRules)
- 引数を追加して、「バインド前」か「バインド後」かを指定できるようにする。
- デフォルトは「バインド後」
独自のValidationRuleを使うアプリに適用すると、従来の動きとすこし異なってしまうのが気になります。