[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 メーリングリストの案内