Super Agile Struts開発記その3
バリデーションに対する質問がいくつかあったので、現状考えている仕様を書いてみます。
バリデーションは、commons-validatorによるものとvalidateメソッドによるものと2つ存在します。
commons-validatorによるバリデーションは、フィールドに指定します。
メソッドでバリデーションを行うには、validateWhen + Actionメソッド名のメソッドを定義します。
@Required
String arg1;
上記の例だと、validateWhenCalculate()はcalculate()が呼び出される直前に呼び出され、メッセージが空の場合のみ、calculate()が呼び出されます。
@Execute
public String calculate() {
...
return "success";
}public ActionMessages validateWhenCalculate() {
ActionMessages messages = new ActionMessages();
...
return messages;
}
特定のメソッドのみ、commons-validateの呼び出しをスキップするには、Executeアノテーションのvalidator属性をfalseにします。
validatorがfalseでも、validateWhenPrevious()があれば、validateWhenPrevious()は呼び出されます。
@Execute(validator = false)
public String previous() {
return "previous";
}
追記:
reset()は、アクションクラスに@Resetのついたメソッドがあれば、呼び出すようにしたいと思っています。
@Reset
public void reset() {
...
}