サポート > Wagby Developer Network > 業務処理のカスタマイズ > アクションのカスタマイズ

カスタマイズの準備

  1. カスタマイズ対象となるモデルについて、Wagby 定義ファイルを開きます。
  2. 「モデル定義シート」から「画面動作定義」ボタンを押して「画面動作定義シート」へ移ります。
  3. シートの末尾にある「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 クラスの説明をお読みください。

ビルド

変更したファイルのビルド方法については、「カスタマイズファイルの適用方法」をお読みください。