2010年04月14日

[仕事]SAStrutsのvalidateの呼び出し

 【SAStruts+S2JDBC】で開発していますが、そのvalidateで「ほぉ〜」を思う挙動があったのでメモしておきます。

***********************

 Executeアノテーションのvalidateプロパティに設定するメソッドが、Formクラス、Actionクラスの双方にあった場合、『Formクラスのメソッドのみ』が実行されます。

 そして、Formクラス→Actionクラスの順に検索されるため、Actionクラスに書いていても(Formクラスに同名のメソッドを書いていることを忘れていて)「あれ?呼び出されない??」なんて状況になります。

◆Actionクラスのサンプル
@Execute(validate = "validateXxx", input = "error.jsp")
public String sampleX() {
//処理
}
//こっちは実行されない。
public ActionMessages validateXxx() {
ActionMessages errors = new ActionMessages();
//処理
return errors;
}


◆Formクラスのサンプル
//こっちが実行される。
public ActionMessages validateXxx() {
ActionMessages errors = new ActionMessages();
return errors;
}

***********************

 異なるクラスでも同名のメソッドがあった場合など、Eclipseは気を利かせて、警告メッセージを表示してくれます。
 が、この場合では、(なんせJava的には関連のないクラスですから)何も表示されません。

 なので「validateを実行したくてActionクラスに実装したけど、どうも実行されないよ〜」な場合、Formクラスに同名のメソッドが無いか確認してみてください。


タグ:SAStruts 技術
posted by yohhatu at 05:33 | Comment(0) | TrackBack(0) | 仕事 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック