5分間チュートリアルでちょっとはまった
http://cubby.seasar.org/20x/fiveminute.html
validation が動かない、でした。
仕様が変わったのかな。
あっさりと解決。
プロパティというか、フレームワークが触るオブジェクトの validation が final なのが駄目でした。
final 怖い。
@Path("login") public class LoginAction extends Action { public Map<String, Object> sessionScope; @RequestParameter public String userId; @RequestParameter public String password; public /*final*/ ValidationRules validation = new DefaultValidationRules("login.") { @Override public void initialize() { add("userId", new RequiredValidator()); add("password", new RequiredValidator()); } }; public ActionResult index() throws Exception { return new Forward("/todo/login.jsp"); } @Validation(rules="validation", errorPage="/todo/login.jsp") public ActionResult process() throws Exception { User user = login(userId, password); if (user != null) { sessionScope.put("user", user); return new Redirect("/"); } else { errors.add("ユーザIDかパスワードが違う"); return new Forward("/todo/login.jsp"); } } ... 009/06/14 23:27:10 org.apache.catalina.core.StandardWrapperValve invoke 致命的: サーブレット default のServlet.service()が例外を投げました java.lang.IllegalStateException: アクション local.cubby.example.todo.action.LoginAction$$EnhancedByS2AOP$$d1711b@22cae2 には @Validation で指定された validation に対する属性がありません at org.seasar.cubby.validator.ValidationUtils.getValidationRules(ValidationUtils.java:63) at org.seasar.cubby.plugins.ValidationPlugin.invokeAction(ValidationPlugin.java:72) at org.seasar.cubby.internal.controller.impl.ActionProcessorImpl$ActionInvocationImpl.proceed(ActionProcessorImpl.java:154) at org.seasar.cubby.internal.controller.impl.ActionProcessorImpl$ActionInvocationImpl.proceed(ActionProcessorImpl.java:112) at org.seasar.cubby.internal.controller.impl.ActionProcessorImpl.process(ActionProcessorImpl.java:97)