i ntra-mart The Power for Enterprise Web Solution
拡張 <IMART> タグ

概要

拡張 <IMART> タグとは、標準で用意されている機能の他に独自の機能をサーバ側で処理されるタグ(<IMART>)としてロジックを登録できる機能です。



タグ関数の作成

実際に実行されるロジックは、FunctionContainer の関数として作成します。

タグ関数
function tagFunction(attr, inner){
    return (String) + inner.execute();
}

タグ関数では、実行時に実行エンジンから attrinner という2つの引数を受け取ります。引数 attr は <IMART> タグのタグ属性として与えられた属性値を持っています。attr はオブジェクト型で、属性名のプロパティを持ち、その値は属性値に等しくなります。

属性値 = attr.属性名

引数 inner の execute() メソッド(Function Container API InnerText を参照)を実行する事により、<IMART> タグおよび </IMART> に挟まれた範囲のスクリプトを実行する事が出来ます。これにより、<IMART> タグのネストされた範囲を画面に表示する事が出来ます(ネストされたタグの実現)。

タグ関数は、必ず文字列を返却値として返す必要があります。タグ関数から返された文字列は、そのタグが定義されていた位置に挿入(画面に表示)されます。



タグ関数の登録

タグとして動作させるロジックを記述した関数を実行エンジンに登録する事により、Presentation Page で拡張 <IMART> タグとして利用できるようになります。
拡張 <IMART> タグは、標準機能として提供されている他の <IMART> タグと同様にして利用できます(記述方法も全く同じです)。

タグ関数を登録するには、Function Container API Imart.defineType() を使います。このAPIにより登録された関数は、Application Server が停止するまで有効に働きます(つまり、タグ関数の登録は1度だけで十分です)。
タグ関数登録時に指定した参照名が、そのままタグの type 名称となります。Presentation Page をプログラムする際、この type 名称は大文字・小文字を厳密に判定しますので、登録時には使いやすい名前になるように十分配慮するようにして下さい。



メッセージをキャプションとして表示する拡張タグ

ファンクション・コンテナ
Imart.defineType("caption", viewCaption);

function viewCaption(attr, inner){
    if(attr.size == "1"){
        return "<H1>" + inner.execute() + "</H1>";
    }
    else if(attr.size == "2"){
        return "<H2>" + inner.execute() + "</H2>";
    }
    else{
        return "<H3>" + inner.execute() + "</H3>";
    }
}
プレゼンテーション・ページ



<IMART type="caption" size="1">セクション1</IMART>
<IMART type="caption" size="2">セクション2</IMART>
<IMART type="caption">セクション3</IMART>



実行結果



<H1>セクション1</H1>
<H2>セクション2</H2>
<H3>セクション3</H3>






注意事項

拡張タグのロジックを定義している関数内でページ遷移などのAPIを呼び出さないで下さい。

拡張タグ関数内で利用できないAPI
  • forward()
  • redirect()
  • transmission()
  • Debug.browse()
  • Module.alert.*
  • Module.download.*
  • Module.mobile.alert()



Copyright(C) NTT DATA INTRAMART CO.,LTD. 2000-2006 All Rights Reserved.