[Seasar-user:20767] Re: [Doma-Gen]useDelegateについて
fujita
[E-MAIL ADDRESS DELETED]
2011年 5月 20日 (金) 11:13:32 JST
中村(taedium)さん
藤田です。
お世話になっております。
ありがとうございました。
いろいろやってみようと思います。
Domaはなんだか楽しいですね。
よろしくお願いします。
2011年5月19日22:29 Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>:
> 中村(taedium)です。
>
>> 固定で埋め込んで問題ないのですが、条件分岐をテンプレートにいれて
>> 作る・作らないの判定を入れることができればと思ったしだいです。
>
> Doma-Genが提供するAntタスクのGenクラスを
> 継承して新しいタスクを作成すれば、
> 比較的簡単にテンプレートから任意のデータにアクセスできます。
>
> たとえば、今回の例に合わせると、次のようなコードを作成する
> ことになります。
>
> public class MyGen extends Gen {
> @Override
> protected void generateDao(DaoDesc daoDesc) {
> // オリジナルを自前のオブジェクトでラップ
> super.generateDao(new MyDaoDesc(daoDesc));
> }
>
> public class MyDaoDesc extends DaoDesc {
> private DaoDesc daoDesc;
> public MyDaoDesc(DaoDesc daoDesc) {
> this.daoDesc = daoDesc;
> }
> // テンプレートからアクセスしたいデータをアクセサで公開
> public boolean isUseDelegate() {
> return daoConfig.isUseDelegate();
> }
> // 親のDaoDescのメソッドはすべてオーバーライドして
> // daoDescインスタンスフィールドに委譲する
> ...
> }
> }
>
> そして、build.xml の taskdef 要素ではGenクラスの代わりに独自に作成した
> MyGenクラスを登録するようにします。
>
> <taskdef name="gen"
> classname="example.MyGen"
> classpathref="classpath"
> loaderref="genLoaderref" />
>
> これでDaoのテンプレートから次の記述が有効になります。
>
> <#if useDelegate></#if>
>
> Genクラスはいろんなところがオーバーライドできるようになっているので
> 好きにカスタマイズできます。お試しください。
>
> --
> Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
--
--
fujita<[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内