S2Fisshplateとは
Fisshplateは、S2Containerには依存しておらず、汎用的に利用する事が出来ます。
S2Fisshplateを使う事によって、S2とFisshplateを連携して、インタフェースを定義するだけでFisshplateの機能を使う事が出来ます。
基本的な使い方
まず、テンプレートに埋め込むDtoを作ります。
- プロパティのsetter、getterを必ず作って下さい。publicフィールドの動作は確認していません。
public class TestFisshplateDto { private String title; private List itemList; (setter、getter省略) }
次に、インタフェースを定義します。
- メソッドの戻り値は、必ず「HSSFWorkbook」にして下さい。
- 引数は1つにして下さい。引数が複数の場合、第1引数のみが埋め込み用データとして扱われ、他は無視されます。
- メソッドはいくつあっても構いません。が、オーバーロードするとテンプレートのファイル名との対応が出来なくなるので、 メソッド名はそれぞれ一意になるようにして下さい。
public interface TestFisshplate { HSSFWorkbook getTestWb(TestFisshplateDto dto); }
diconファイルに、コンポーネントとして登録します。
<components> <include path="s2fisshplate.dicon"/> <component class="org.seasar.fisshplate.interceptor.TestFisshplate" > <aspect>fisshplate.interceptor</aspect> </component> </components>
「s2fisshplate.dicon」をインクルードして下さい。そして、Fisshplate用インタフェースのコンポーネント定義に、 aspectで「fisshplate.interceptor」をかませます。
テンプレートファイルを作ります。
- ファイル名は、「インタフェース名_メソッド名.xls」にして、インタフェースと同じパッケージに置きます。
- この規約通りのファイル名、パッケージにする事で、S2Fisshplate側でテンプレートの読み込みを自動で行う事が出来ます。
- TestFisshplate#getTestWb()の場合ファイル名は「TestFisshplate_getTestWb.xls」になります。
- 引数のDtoのプロパティは、「data」という名前で参照出来ます。
- この場合、TestFisshplateDto#getTitle()は「${data.title}」で参照されます。
呼び出し側はこのようになります。 テンプレートファイルの読み込み、解析、ファイル出力などの処理が自動で実行され、出力ファイルが戻されます。
public TestFisshplate fisshplate; //S2からインジェクションされます。 public void Hoge(){ TestFisshplateDto dto =new TestFisshplateDto(); dto.setTitle("テストです"); List itemList = new ArrayList(); TestItem item = new TestItem(); item.setDate(new Date()); item.setName("1行目"); item.setNum(10); itemList.add(item); // 適宜明細行を追加 dto.setItemList(itemList); HSSFWorkbook wb = fisshplate.getTestWb(dto); //以下略 }
このようにして、データ埋め込み済みのHSSFWorkbookを取得する事が出来ます。
SMART deploy
S2Fisshplateは、S2のSMART deployをサポートしています。
SMART deployでS2Fisshplateを使うには、いくつかの設定とルールが必要になります。
creator.diconの編集
creator.diconに、FisshplateCreatorを登録します。
<components> <include path="convention.dicon"/> <include path="customizer.dicon"/> <component class="org.seasar.framework.container.creator.PageCreator"/> <component class="org.seasar.framework.container.creator.ActionCreator"/> (中略、以下を追記) <component class="org.seasar.fisshplate.creator.FisshplateCreator" /> </components>
customizer.diconの編集
customizer.diconに、「fpaoCustomizer」の名前でCustomizerを登録します。
<component name="fpaoAspectCustomizer" class="org.seasar.framework.container.customizer.AspectCustomizer"> <property name="interceptorName">"fisshplate.interceptor"</property> </component> <component name="fpaoCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain"> <initMethod name="addCustomizer"> <arg>fpaoAspectCustomizer</arg> </initMethod> </component>
app.diconの編集
app.diconにincludeを追加します。
<include path="s2fisshplate.dicon"/>
インタフェースのルール
SMART deployの場合、Fisshplateアクセス用のインタフェースのパッケージと名前を規約通りにする必要があります。
インタフェースのサフィックスを「Fpao」にして下さい。「Fpao」は、「Fisshplate Access Object」の略です。
また、インタフェースのパッケージを「(convention.diconのrootPackageName).fpao」にして下さい。
以上で、特にdiconファイルに書かなくても、「xxxxFpao」というインタフェースを作るだけで、S2Fisshplateの機能が使えるようになります。