JST の使用

JST を使用するには、拡張子 .jst を持つ JSP ファイルを保存します。JRun では、ページを、end タグで呼び出されるカスタムタグとして処理します。これによって、コードの再利用に便利なメカニズムを提供します。ただし、JST テクノロジーには、JSP の仕様書に概説されている次の機能があります。

JSP でカスタムタグを作成するには、JSP の標準的なディレクティブについて、修正されたシンタックスまたは新しいシンタックスを使用する必要があります。次のセクションでは、新しいシンタックスについて説明します。

tag ディレクティブの使用

tag ディレクティブを使用して、次のタイプの情報を宣言します。

method 属性を持つ tag ディレクティブ

JST がいつ呼び出されるかを示すには、method 属性を持つ tag ディレクティブをコーディングします。次のシンタックスを使用します。

<%@ tag method="method" %>

次の表で、tag ディレクティブ内の method 属性の値について説明します。
説明
START
開始タグが検出されたときに JST ページを呼び出します。START の許容可能な戻りコードは、EVAL_BODY_INCLUDE および SKIP_BODY
です。
END
終了タグが検出されたときに JST ページを呼び出します。END の許容可能な戻りコードは、EVAL_PAGE および SKIP_PAGE です。
AFTER_BODY
本文の後に JST ページを呼び出します。AFTER_BODY の許容値は、本文のループに使用する EVAL_BODY_AGAIN、および SKIP_BODY です。AFTER_BODYEND の違いは、許容可能な戻り値にあります。また、AFTER_BODY を指定した場合は、<%@ tag type="LOOPING|BUFFERED" %> も指定する必要が
あります。

tag ディレクティブはオプションです。デフォルトは END です。

メソッドおよび戻りコードの詳細については、JSP の仕様書または 弟 11 章、「Java のカスタムタグ」を参照してください。

type 属性を持つ tag ディレクティブ

JST が本文コンテンツと対話するかどうかを示すには、type 属性を持つ tag ディレクティブをコーディングします。次のシンタックスを使用します。

<%@ tag type="type" %>

次の表で、type 属性の値について説明します。
説明
LOOPING
JST は、BodyTag インターフェイスを実装するカスタムタグにトランスレートされます。BODY_TAG を使用すると、本文コンテンツと対話してループできます。LOOPING は、本文を反復しますが本文コンテンツを
返しません。
BUFFERED
JST は、BodyTag インターフェイスを実装するカスタムタグにトランスレートされます。BODY_TAG を使用すると、本文コンテンツと対話してループできます。BUFFERED は、本文コンテンツをループして返します。

<%@ tag method="AFTER_BODY" %> を指定するときに、このディレクティブをコーディングします。

JST での属性の使用

JST ページに渡される属性を定義するには、次のシンタックスを使用して tagAttribute ディレクティブをコーディングします。

<%@ tagAttribute name="name" type="class" required="true|false"
                 rtexpr="true|false" setter="true|false"
                 default="default attribute value" %>

次の表で、tagAttribute ディレクティブの属性について説明します。
属性
説明
name
必須。属性名を指定します。
type
オプション。たとえば Integer など、属性の Java クラス名を指定します。インポートステートメントをコーディングしていない場合や、クラスが java.lang でない場合は、完全修飾クラス名を指定します。デフォルトは String です。
required
オプション。属性が必須かどうかを示します。true または false を指定
します。デフォルトは false です。
rtexpr
オプション。属性に実行時の式を含めることができるどうかを示します。true または false を指定します。デフォルトは false です。
setter
オプション。JRun によって getAttributeName メソッドを自動的に
作成する場合は true、カスタマイズされた getAttributeName メソッドを指定する場合は false を指定します。デフォルトは true です。
デフォルト
オプション。属性のデフォルト値を指定します。

属性の例

次の例は、handle という名前の属性の宣言を示しています。

<%@ tagAttribute name="handle" type="String" required="true" 
rtexpr="true" %>

この tagAttribute ディレクティブによって、JST ページで次の処理が実行されます。

JST でのスクリプト変数の使用

スクリプト変数は、ユーザーがページをリクエストする際に JSP で使用できる変数です。スクリプト変数は、宣言、スクリプトレット、または式で利用できます。JST でスクリプト変数を定義するには、tagVariable ディレクティブをコーディングします。次のシンタックスを使用します。

<%@ tagVariable (id="attribute"|name="name") type="class" 
scope="scope" %>

次の表で、tagVariable ディレクティブの属性について説明します。
属性
説明
id
スクリプト変数の名前を値として持つタグ属性の名前を指定します。id 属性または name 属性のいずれかを指定する必要があります。両方を指定することはできません。
name
name 属性ではスクリプト変数の名前を指定します。id 属性または name 属性のいずれかを指定する必要があります。両方を指定することはできません。
type
オプション。たとえば Integer などのスクリプト変数の Java クラス名を指定します。インポートステートメントをコーディングしていない場合や、クラスが java.lang でない場合は、完全修飾クラス名を指定します。デフォルトは String です。
scope
オプション。スクリプト変数の範囲を指定します。次のいずれかを指定できます。
  • AT_BEGIN  タグの本文内と JSP の残りの部分でスクリプト変数を使用できます。デフォルトは AT_BEGIN です。
  • AT_END  JSP の残りの部分でスクリプト変数を使用できます。
  • NESTED  タグの本文内でスクリプト変数を使用できます。

scope 属性を使用する際の追加事項については、JSP 1.1 のメソッドを使用している場合は 「TEI クラスのコーディング」 、JSP 1.2 のメソッドを使用している場合は 「JSP 1.2 でのスクリプト変数の使用」 を参照してください。

スクリプト変数の例

次の例では、tagVariable ディレクティブを使用して、filename という名前のスクリプト変数を作成します。この変数は、タグの本文内と、JSP の残りの部分で使用できます。

<%@ tagVariable name="filename" type="String" scope="AT_BEGIN" %>

URI の定義

JST を使用する JSP をコーディングするときは、Java ベースのカスタムタグを使用する JSP のコーディングの場合と同様に、必要なのは taglib ディレクティブを指定することです。唯一の違いは、uri 属性で、JAR ファイルの名前ではなく、.jst ファイルが保存されているディレクトリを指定することです。

次のシンタックスを使用します。

<%@ taglib prefix="prefix" uri="directory_containing_jst_pages" %>

次の表で、taglib ディレクティブの属性について説明します。
属性
説明
prefix
必須。JSP 開発者が、uri 属性で指定されたディレクトリから JST を呼び出すときに使用する接頭辞を指定します。
uri
必須。JST ページが含まれているディレクトリの名前を指定します。これは Web アプリケーションのルートを基にしています。

URI の例

次の例は、myjst という接頭辞を使用して、JST ページが web_app_root/jstdir ディレクトリにあることを指定します。

<%@ taglib prefix="myjst" uri="/jstdir" %>