ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Super Agile Struts開発記その3

バリデーションに対する質問がいくつかあったので、現状考えている仕様を書いてみます。
バリデーションは、commons-validatorによるものとvalidateメソッドによるものと2つ存在します。
commons-validatorによるバリデーションは、フィールドに指定します。


@Required
String arg1;
メソッドでバリデーションを行うには、validateWhen + Actionメソッド名のメソッドを定義します。

@Execute
public String calculate() {
...
return "success";
}

public ActionMessages validateWhenCalculate() {
ActionMessages messages = new ActionMessages();
...
return messages;
}

上記の例だと、validateWhenCalculate()はcalculate()が呼び出される直前に呼び出され、メッセージが空の場合のみ、calculate()が呼び出されます。
特定のメソッドのみ、commons-validateの呼び出しをスキップするには、Executeアノテーションのvalidator属性をfalseにします。

@Execute(validator = false)
public String previous() {
return "previous";
}
validatorがfalseでも、validateWhenPrevious()があれば、validateWhenPrevious()は呼び出されます。
追記:
reset()は、アクションクラスに@Resetのついたメソッドがあれば、呼び出すようにしたいと思っています。

@Reset
public void reset() {
...
}