[mayaa-user:642] Re: [mayaa]複数のmayaaファイルをデフォルトにしたい

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2008年 2月 21日 (木) 12:23:51 JST


片岡です。

sugaさんにアドバイスいただいた方法で、要件的には満たせそうと思っている
のですが、どうもうまくいきません。通常のおき方だと問題ないので、なにやら
切り分けがつきません。
 設定なのか、必要なライブラリがないからなのか、環境の問題なのか、よく
わからない状態です。
 アドバイスいただけないでしょうか。

***************************************************************
【Exception】
 TemplateErrorHandler:69 Page not found, /aaa/index$/foo/bar/index.html
 TemplateErrorHandler:98 error template not found, /org.seasar.mayaa.impl.engine.PageNotFoundException
 TemplateErrorHandler:98 error template not found, /org.seasar.mayaa.impl.MayaaException
 TemplateErrorHandler:98 error template not found, /org.seasar.mayaa.impl.util.AbstractMessagedException
 TemplateErrorHandler:98 error template not found, /java.lang.RuntimeException
 TemplateErrorHandler:98 error template not found, /java.lang.Exception

**************************************************************
●${contextPath}/aaa/index.mayaa
  <?xml version="1.0" encoding="UTF-8"?>
  <m:mayaa
	xmlns:m="http://mayaa.seasar.org"
	xmlns:c="http://java.sun.com/jsp/jstl/core"
	xmlns:bean="http://struts.apache.org/tags-bean"
	xmlns:html="http://struts.apache.org/tags-html"
	xmlns:s="http://sastruts.seasar.org"
	m:templateSuffix="/foo/bar/index">
   </m:mayaa>

●${contextPath}/foo/bar/index.html
   <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     <title>mayaaを利用したディレクトリ切り替え試験</title>
   </head>
   <body>
        <h1>mayaaを利用したディレクトリ切り替えの試験</h1>
   </body>
   </html>



>-----Original Message-----
>From: [E-MAIL ADDRESS DELETED] 
>[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of suga
>Sent: Thursday, February 21, 2008 9:39 AM
>To: [E-MAIL ADDRESS DELETED]
>Subject: [mayaa-user:636] Re:[mayaa]複数のmayaaファイルをデフォルトにし
>たい
>
>
>suga です。
>
>2008/2/20  <[E-MAIL ADDRESS DELETED]>:
>>  ユーザ要件の部分を詳しく書きますと、イメージはASPサービスのイメージ
>>  です。なので、Aアクション/aaa/bbb/の部分は、{顧客ID}/{テンプレート
>ID}
>>  になります。
>>  Aアクション/{顧客ID}/{テンプレートID}ディレクトリに対して、ページ製
>作者が
>>  自由にファイルをアップし、お客さん毎に動的に画面のデザインを切り替え
>ると
>>  いうのがやりたいことです。
>>  〜テンプレートは顧客毎に複数用意できるので、2階層のディレクトリになっ
>>>  います。
>
>なるほど、理解しました。
>
>だとすると簡単な方法は、templateSuffix にパスを入れてしまうことかもしれ
>ません。
>
>/aaa/index.mayaa に m:templateSuffix="/foo/bar/index" としておくと、
>テンプレートは
>/aaa/index$/foo/bar/index.html
>になります。
>
>エンジン設定で suffix セパレータを変更しておけば、$ を別のものにすること
>>できます。
>http://mayaa.seasar.org/documentation/engine_settings.html
>
>
>
>>  >> どうしても別のディレクトリのもので同じ Mayaa を使いたいという
>>  >> 場合、独自の実装を作ってエンジン設定で実装クラスを入れ替える
>>  >> しかありません。
>>
>>  すみません。これをやろうとすると、どのあたりをいじることになりますか
>>>  既存のソースをいじることなく、「エンジン設定で実装クラスを入れ替える
>>>  ことは可能なものですか。
>
>こちらだともっと自由度は上がりますが、やることは複雑になります。
>基本的には上で述べた方法のうち、元のページ名である "index" も含めて
>変更できるようになります。
>
>たとえばこんなクラスを作ります。
>Mayaa 標準の Engien 実装を継承して、テンプレートファイルのパスを
>suffix 含めて組み立てる部分のみ変更します。
>
>--------------------------
>package example;
>
>import org.seasar.mayaa.engine.Page;
>import org.seasar.mayaa.impl.engine.EngineImpl;
>import org.seasar.mayaa.impl.util.StringUtil;
>
>public class TemplateNameSampleEngineImpl extends EngineImpl {
>
>    public String getTemplateID(Page page, String suffix, 
>String extension) {
>        // name : /foo/bar  | /foo/bar.mayaa に対応
>        String pageName = page.getPageName();
>        StringBuffer name = new StringBuffer(pageName.length());
>        if (StringUtil.hasValue(suffix)) {
>            // 本来は /foo/bar$suffix のところを /foo/suffix/bar にする
>            int lastIndex = pageName.lastIndexOf('/');
>            name.append(pageName.substring(0, lastIndex));
>            name.append('/');
>            name.append(suffix);
>            name.append(pageName.substring(lastIndex));
>        } else {
>            name.append(pageName);
>        }
>        if (StringUtil.hasValue(extension)) {
>            name.append(".").append(extension);
>        }
>
>        // どんなパスになるかを確認のためコンソールに出す
>        System.out.println("template systemID : " + name);
>
>        return name.toString();
>    }
>}
>---------------------------
>
>この Engine 実装を使うようにエンジン設定をおこないます。
>
>基本的にはドキュメントにある方法と同じなのですが、パラメータではなく
>クラス名を書き換えるので、標準のパラメータなども全部書く必要があります。
>http://mayaa.seasar.org/documentation/engine_settings.html
>
>元のファイルは Mayaa の下記パスにありますので、engine 部分を丸々
>コピーしてクラス名だけ上記のファイルに書き換えます。
>配置の仕方はドキュメント通りです。
>org/seasar/mayaa/impl/provider/factory/org.seasar.mayaa.provide
>r.ServiceProvider
>
><engine class="example.TemplateNameSampleEngineImpl">
>    標準のものをそのまま、または一部を変更したもの
></engine>
>
>こうすると
>   /foo/index$bar.html
>となるところが
>   /foo/bar/index.html
>になります。
>もちろんソースコードを書き換えればいろいろな組み立てができます。
>
>-- 
>suga ( [E-MAIL ADDRESS DELETED] )
>_______________________________________________
>mayaa-user mailing list
>[E-MAIL ADDRESS DELETED]
>https://ml.seasar.org/mailman/listinfo/mayaa-user
>


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