[mayaa-user:891] Re: Mayaaファイルの多段化

Susumu ISHIGAMI [E-MAIL ADDRESS DELETED]
2010年 1月 24日 (日) 14:58:26 JST


お世話になっております。
石上です。

私の方で調べてみたところ
EngineUtil.java158行目付近のgetParentSpecification()を以下のように
修正し、Mayaaを再ビルドしたところ、
思った動作に近い動きをしました。
(m:idの見つけ方だけ。beforeRenderについては未対応です。)

    public static Specification getParentSpecification(Specification spec) {
        if (spec instanceof Page) {
        	Page page = (Page) spec;
        	if (page.getPageName().startsWith("/client_info")) {
        		int secoundSlashPos = page.getPageName().indexOf("/", 1);
        		secoundSlashPos = page.getPageName().indexOf("/",
secoundSlashPos + 1);
        		String pageName = page.getPageName().substring(secoundSlashPos);
        		return ProviderUtil.getEngine().getPage(pageName);
        	}
        	return ProviderUtil.getEngine();
        } else if (spec instanceof Template) {
            return ((Template) spec).getPage();
        }
        return null;
    }

前回のメールは少し実際と違っていて、実際は
・/client_info/AAAA/foo.html
・/client_info/AAAA/foo.mayaa
・/client_info/BBBB/foo.html
・/foo.mayaa
のように配置されています。

しかし、これだと、Mayaaがリリースされる度に、修正を施さなければなりません。
PathAdjusterのように、実装を切り替えられるようになって欲しいところです。
今後のMayaaバージョンでそのようになっていただけることを希望します。

あるいは、もっと綺麗に対応出来る方法があれば、教えていただけると幸いです。

よろしくお願い致します。

2010年1月23日15:10 Susumu ISHIGAMI <[E-MAIL ADDRESS DELETED]>:
> 石上です。
> お世話になっております。
>
> このたび、次のような要望を受けてしまいました。
> 以前質問させていただいたこと:
> http://ml.seasar.org/archives/mayaa-user/2009-December/000868.html
> の、続きのようなものでして、
>
> 以下のようにテンプレートとmayaaファイルが配置されている状態です。
> /hoge.mayaa
> /1/hoge.html
> /2/hoge.html
>
> 前回は、
> /1/hoge.htmlからも、/2/hoge.htmlからも、
> /hoge.mayaaを使用したいというものでした。
>
> 今回は、新たに
> /1/hoge.mayaa
> というファイルを配置し、ここには
> /hoge.mayaaとの「差分のみを記述したい」という要望です。
>
> このとき、
> /1/hoge.htmlからは、
> ・/1/hoge.mayaa
> ・/hoge.mayaa
> ・/default.mayaa
> に記述したm:idを使用することができ、
>
> beforeRenderは、
> ・/default.mayaa
> ・/hoge.mayaa
> ・/1/hoge.mayaa
> の順で実行され、
>
> afterRenderは
> ・/1/hoge.mayaa
> ・/hoge.mayaa
> ・/default.mayaa
> の順で実行されるようにしたいです。
>
> 現状ですと、/hoge.mayaaのすべての内容を/1/hoge.mayaaに記述
> すれば結果は得られるのですが、次々にコピーが存在してしまうと、
> 管理が仕切れないというのが主な理由です。
>
> 方法としては、以下のいずれかのようにできたらありがたいです。
>
> (1) /1/hoge.mayaaにspecExtends="/hoge.mayaa"のように記述する。
>  >> 通常のextendsでは出来ませんでした。
>
> (2) default.mayaaと同じような動作ですので、
> 現在一つだけのdefault.mayaaをチェーン状に複数配置できるようにし、
> /default.mayaa -> /foo.mayaa のようなチェーンを形成して、
> /*/foo.xhtmlからは今までdefault.mayaaを使っている感覚でdefaultチェーンを
> 参照する。
>
> 非常に難しいことだとは思いますが、
> どんなに大変でも対応したいところです。
> 前回のように何らかのクラスの実装を拡張することで
> できるならば大変幸いです。
>
> 何卒、よろしくお願い致します。
>


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