サポート > Wagby Developer Network > カスタマイズ事例 > Excel 帳票を拡張する (2) 一覧帳票における行番号の付与
この説明は R5.7.0 以降の Wagby でご利用頂けます。
カスタマイズ要件
今回のテーマはプレースホルダを拡張し、一覧表示画面において行番号を表示させるというものです。
例として、モデル staff の一覧表示画面に用意された「一覧帳票」ボタンを押下すると、行番号が付与される例を説明します。
カスタマイズ方法
ReplaceMapHelper ファイルの編集
- 自動生成された env/work/srcgen/jp/jasminesoft/wagby/app/ staff/ReplaceMapHelper.java ファイルを、env/jp/jasminesoft/wagby/app/staff/MyReplaceMapHelper.java として保存します。(ファイル名は「My」を接頭語として付与します。)
フォルダ名は、ご利用になるパッケージ名により変わります。適切に読み替えてください。
- MyReplaceMapHelper.java を編集します。
必要に応じて、get メソッドおよび getType メソッドをオーバーライドします。
public class MyReplaceMapHelper extends ReplaceMapHelper { ... public Map get(StaffLp staff_lp, DbActionParameter p) { Map replaceMap = new HashMap(); ... jp.jasminesoft.wagby.model.staff_lp.Item[] items = staff_lp.getItem(); for (int i=0; i<items.length; i++) { jp.jasminesoft.wagby.model.staff_lp.Item item = items[i]; replaceMap.put("${staff_lp.__line." + i + "}", Integer.toString(i+1)); ...(自動生成されたコード)... } return replaceMap; } public Map getType(CustomerP customer_p, DbActionParameter p) { Map typeMap = new HashMap(); ... typeMap.put("${staff_lp.__line}", "integer"); ... return typeMap; }
このソースコードのポイントは次のとおりです。
- 一覧表示におけるプレースホルダは、"モデル名_lp." で始まる必要があります。ここでは、独自に追加した名前 "__line" を用いましたが、この部分は既存のモデル定義に重複しないよう、開発者の方で調整してください。
- getType メソッド内で用意する typeMap オブジェクトには、"integer" を指定しました。
ただし「型情報」は一覧表示画面では反映されません。これは現在の Wagby の課題です。
一覧帳票用テンプレートファイルの作成
Excel 形式のテンプレートファイルでは、一行にまとめて次のように記載します。
| ${staff_lp.__line.#} | ${staff_lp.name.#} | ... |
|---|
ビルド
変更したファイルのビルド方法については、「カスタマイズファイルの適用方法」をお読みください。
なお、カスタマイズされたヘルパコードの存在が認識されると、自動生成される bean 定義ファイル(work/srcgen/webpage/WEB-INF/applicationContext/customer.xml)は次のように変更されます。
<bean id="CustomerReplaceMapHelper" class="jp.jasminesoft.wagby.app.staff.MyReplaceMapHelper"/>
これによって、カスタマイズされたクラスが使われるようになることがわかります。
