Cubby Validatonの定義
http://d.hatena.ne.jp/CamelCase/20071204の「インターフェイスをメタデータ代わりに使う」方式がよかったので、以下のようにクラスを指定するのもいいかなと思っています。
Before:
public class TodoAction extends Action { public ValidationRules loginValidation = new DefaultValidationRules() { public void initialize() { add("userId", new RequiredValidator()); add("password", new RequiredValidator()); add(new UserValidationRule()); } }; @Validation(rules = "loginValidation", errorPage = "/todo/login.jsp") public ActionResult process() { return new Redirect("/todo/"); } }
After:
public class TodoAction extends Action { public class LoginValidation extends DefaultValidationRules { public void initialize() { add("userId", new RequiredValidator()); add("password", new RequiredValidator()); add(new UserValidationRule()); } } @Validation(rules = LoginValidation.class, errorPage = "/todo/login.jsp") public ActionResult process() { return new Redirect("/todo/"); } }
追記:インタフェイス版もなかなかおもしろいなー。