[mayaa-user:868] Re: mayaaファイルの共通化

suga [E-MAIL ADDRESS DELETED]
2009年 12月 1日 (火) 21:21:07 JST


suga です。

ごくシンプルに対応するなら、


http://mayaa.seasar.org/documentation/template_path.html
/mayaa と /html をテンプレートを探すパスに設定し、

/mayaa/1/hoge.mayaa
/mayaa/1/fuga.mayaa
/html/1/hoge.html
/html/1/fuga.html

となるように置くことでしょう。


このときユーザごとという要件については、例えば2種類思いつきます。
シンプルな 1 がお薦めですが、参考までに 2 も簡単に書きます。

1. シンボリックリンク

/mayaa-base/hoge.mayaa
/mayaa-base/fuga.mayaa
としてmayaaを置いて、

/mayaa/1 -> /mayaa-base のシンボリックリンクをユーザ登録時に作成

この方法だと改造的なことは不要です。


2. パス解決のクラスを置き換え

検証していないので詳細は書けませんが、

http://mayaa.seasar.org/documentation/template_path.html
でパス解決をしている設定のデフォルトは、下記のファイルです。

https://www.seasar.org/svn/mayaa/trunk/mayaa/src-impl/org/seasar/mayaa/impl/factory/org.seasar.mayaa.source.PageSourceFactory

この factory serviceClass="..." に自作したクラスを指定して、
org.seasar.mayaa.source.PageSourceFactory ファイルを classes/META-INF の下に
置いてください。(ServiceProvider の設定と同様です)

<factory class="org.seasar.mayaa.impl.source.PageSourceFactoryImpl"
	serviceClass="自作したクラス">
	<parameter name="folder" value="/WEB-INF/page"/>
</factory>

デフォルト実装の
org.seasar.mayaa.impl.source.PageSourceDescriptor
を継承して、
/1/hoge.mayaa を探しに来たところで
/mayaa-base/hoge.mayaa の内容を返す、というような実装にする形です。

これだけ省略して書いても割と手間がかかることが分かると思います。
もっと複雑なことをしようとするとこちらの方法 (の変形) になりますが、
先のメールの内容であればシンボリックリンクによる対応がシンプルで
メンテも楽だと思いますが、いかがでしょう。

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



2009/12/1 Susumu ISHIGAMI <[E-MAIL ADDRESS DELETED]>:
> 石上です。
> いつもお世話になっております。
>
> 現在関わっている案件で、少々無理な要望がありまして、
> もし、簡単に対応できるならば教えていただきたく思います。
> もし、単純には無理でも、ソースコードの修正でもいいので、
> その場合は拡張ポイントなどを教えていただけると幸いです。
>
> さて、Mayaaの仕様では、
> .mayaaファイルと、.htmlファイルは、通常、同じ場所にあることが前提となっていると思います。
> しかし、これを、全く別のフォルダに配置し、
> さらに、リクエストURLは.html側を指定するようにしたいと思っております。
>
> 具体的には、
> /hoge.mayaa
> /fuga.mayaa
> /1/hoge.html
> /1/fuga.html
> /2/hoge.html
> /2/fuga.html
>
> のようにサーバー上に配置されていて、
> MayaaServletには*.htmlでマッピングしているとします。
>
> このとき、
> /1/hoge.html
> をリクエストすると、
> /hoge.mayaaを読み込んで処理させたく思います。
>
> これによって、やりたいことは、
> ある、ASPサービスで、ユーザごとにデザインを変更できるようにするという要件です。
> 今までは、ユーザごとに、.mayaaファイルまでコピーしていたのですが、
> それだと、.mayaaファイルのメンテナンスが大変になるため、
> .htmlのみをコピーするようにしたいと思いました。
>
> 過去のMLで、
> http://ml.seasar.org/archives/mayaa-user/2008-February/000645.html
> に似ていますが、
> 今回は、各ユーザには.mayaaファイルは必要なく、
> ディレクトリもユーザごとに作成したいです。
>
> 以上、何か方法がございましたら、
> よろしくお願いいたします。
> _______________________________________________
> mayaa-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/mayaa-user
>


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