[mayaa-user:797] Re: テンプレートをファイル以外で持つ方法について
suga
[E-MAIL ADDRESS DELETED]
2009年 6月 2日 (火) 11:58:35 JST
suga です。
2009/6/1 : p <[E-MAIL ADDRESS DELETED]>:
> 環境:oracle+s2jdbc+sastruts+mayaaで開発しております。
>
> Mayaaのテンプレートファイル(html)をDBから取得し、ファイルとして書き出さずに、SAStrutsのFormオブジェトの
> とあるプロパティに設定したhtmlソースを.mayaaファイルとバインディングさせたいと考え、調べています。
> がよい方法が見つけられません。
>
> 何か解決策又はヒントはありませんでしょうか?
classes/META-INF/org.seasar.mayaa.source.PageSourceFactory
という XML ファイルを置いて、Mayaa がソースを探すパスを
カスタマイズすれば可能です。
オリジナルは src-impl/org/seasar/mayaa/impl/factory/ の下にあります。
<factory class="org.seasar.mayaa.impl.source.PageSourceFactoryImpl"
serviceClass="org.seasar.mayaa.impl.source.PageSourceDescriptor">
<parameter name="folder" value="/WEB-INF/page"/>
</factory>
この serviceClass として指定されているクラスを独自のものに置き換える
という形になるでしょう。
ソースの systemID とはコンテキストルートからの /foo/bar.html のような
パスです。拡張子が .html なら独自で探し、そうでなければデフォルトに
任せるような実装をする形でしょうか。
独自SourceDescriptorとデフォルトとの場合分けをするところは、
PageSourceFactoryImpl も置き換える方がスマートかもしれません。
注意点としては、getTimestamp() で再ビルドが必要かどうかのチェックを
するため、適切にタイムスタンプを返す必要があることです。
タイムスタンプチェックを無効にしているなら話は別ですけど。
--
suga ( [E-MAIL ADDRESS DELETED] )
mayaa-user メーリングリストの案内