[mayaa-user:553] Re: ファイルをDB上の配置したい

suga [E-MAIL ADDRESS DELETED]
2007年 8月 18日 (土) 22:22:57 JST


suga です。

On 8/17/07, Junichi Kato <[E-MAIL ADDRESS DELETED]> wrote:
> htmlファイル,mayaaファイルの内容をDB上に配置したいのですが,
> どのようなカスタマイズを行えばよいでしょうか?
> アドバイスをいただければ幸いです.よろしくお願いします.

テンプレートファイル、Mayaa ファイル、m:exec で読み込むスクリプトファイルは
すべて同じロジックで探し、読み込んでいます。

ファイルのパスを「システム ID」として扱い、通常であればクラスパスのルート、
コンテキストルート、/WEB-INF/page/ の3つをルートとし、"/" 始まりのパスで
ファイルを指定します。

たとえば "/index.html" や "/foo/bar.mayaa" などが「システム ID」になります。
システム ID を渡されたら、それに対応する InputStream を取得できる実装を
用意することで、DB からテンプレートファイルなどを読み込むように作ることは
できます。


org.seasar.mayaa.source.SourceDescriptor を実装したクラスを用意する形に
なります。
標準で使われるクラスは下記のクラスです。
  org.seasar.mayaa.impl.source.PageSourceDescriptor

このインスタンスを生成するファクトリクラスは下記のクラスです。
  org.seasar.mayaa.impl.source.PageSourceFactoryImpl

これらの定義はエンジン設定同様に設定できます。
設定ファイルは下記パスに置きます。
  META-INF/org.seasar.mayaa.source.PageSourceFactory

標準の内容は下記の通りです。
大抵の場合は factory タグの serviceClass 属性を独自クラスに書き換えて、
parameter を書き換えたクラス用のものに入れ換えれば実現できるでしょう。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE factory
	PUBLIC "-//The Seasar Foundation//DTD Mayaa Factory 1.0//EN"
    "http://mayaa.seasar.org/dtd/mayaa-factory_1_0.dtd">
<factory class="org.seasar.mayaa.impl.source.PageSourceFactoryImpl"
	serviceClass="org.seasar.mayaa.impl.source.PageSourceDescriptor">
	<parameter name="folder" value="/WEB-INF/page"/>
</factory>


細かいところは API (パッケージ名に impl が含まれないクラス/インターフェース)
の javadoc を見ればある程度わかると思います。

-- 
suga ( [E-MAIL ADDRESS DELETED] )


mayaa-user メーリングリストの案内