サポート > Wagby Developer Network > 業務処理のカスタマイズ > アクションのカスタマイズ
カスタマイズの準備
- カスタマイズ対象となるモデルについて、Wagby 定義ファイルを開きます。
- 「モデル定義シート」から「画面動作定義」ボタンを押して「画面動作定義シート」へ移ります。
- シートの末尾にある「Javaソースコードの設定/カスタマイズ用の雛形クラスを出力する」という項目を「○」にします。
カスタマイズ対象クラス
「アクション」は、MVC アーキテクチャにおける「C」すなわちコントローラ部を司ります。 Wagby は、Struts をベースにした拡張フレームワークを同梱しています。
ここで、パッケージ名を $(packagename) と表記します。 アクションに関するソースコードは $(DEVHOME)¥env¥work¥srcgen 以下の $(packagename)¥struts に保存されています。 基本は、モデル毎に次のようなファイルが用意されます。
- ShowXXXAction.java (詳細表示)
- ShowListXXXAction.java (一覧表示)
- InsertXXXAction.java (新規登録)
- UpdateXXXAction.java (更新)
- DeleteXXXAction.java (削除)
加えて、各ファイルに対応した、接頭語「My」が加わったファイルも用意されていることがわかります。
- MyShowXXXAction.java (詳細表示:カスタマイズ用)
- MyShowListXXXAction.java (一覧表示:カスタマイズ用)
- MyInsertXXXAction.java (新規登録:カスタマイズ用)
- MyUpdateXXXAction.java (更新:カスタマイズ用)
- MyDeleteXXXAction.java (削除:カスタマイズ用)
開発者が修正するのは、この「My」がついたソースコードになります。 このクラスは継承クラスとなっており、内容は空になっています。
public class MyShowXXXAction extends ShowXXXAction
{
/** Logger クラスを準備します。 */
private final static Logger logger =
Logger.getLogger(MyShowXXXAction.class.getName());
}
開発者は、親クラスである(自動生成された)ShowXXXAction クラスのメソッドを、この MyShowXXXAction にて、オーバーライドすることができます。
画面遷移を定義する(自動生成された)struts-config.xml は、この My クラスを利用するように設定されています。
フックポイント
自動生成された ShowXXXAction などのクラスには、フックポイントが設けられています。 例として、MyShowXXXAction.java の一部を抜粋します。
public class ShowSansyomodelAction extends DbShowAction
{
...(中略)...
public ActionForward do_show(DbActionParameter p)
throws IOException, ServletException, SecurityException
{
// フックメソッドの呼び出しを行います。
do_show_first_hook(p);
...(中略)...
// フックメソッドの呼び出しを行います。
do_show_finish_hook(p);
return (p.mapping.getInputForward());
}
...(中略)...
/**
* 開発者によってオーバーライドされるフックメソッド
* です。
*
* @param p DbActionParameter
*/
protected void do_show_first_hook(DbActionParameter p) {}
...(中略)...
}
開発者は親クラスのメソッドをオーバーライドすることもできますが、わずかな処理の追加であれば、フックメソッドをオーバーライドすることによって対応することもできます。
フックメソッドには必ず DbActionParameter 型のオブジェクト p が引数として渡されます。
このオブジェクトの詳細については、DbActionParameter クラスの説明をお読みください。
