WebLogic JSP Tag Extensions プログラマーズ ガイド

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

カスタム JSP タグの概要と作成

以下の節では、カスタム JSP タグの機能、フォーマット、およびコンポーネントの概要、ならびにタグ ライブラリの作成とコンフィグレーションの手順について説明します。

 


タグ ハンドラの API および実装

カスタム JSP タグを作成するには、タグ ハンドラと呼ばれる Java クラスを作成します。

JSP 2.0 API には、カスタム タグ ハンドラの作成に使用するクラスとインタフェースのセットが定義されています。javax.servlet.jsp.tagext API に関するドキュメントは、http://java.sun.com/j2ee/j2sdkee/techdocs/api/index.html にあります。

タグ ハンドラは、次の 2 つのタイプのどちらかである必要があります。

Tag

インタフェースにアクセスする必要のないカスタム タグを作成している場合は、javax.servlet.jsp.tagext.Tag インタフェースを実装します。この API は、コンビニエンス クラス TagSupport も提供します。このクラスは、Tag インタフェースを実装し、このインタフェース内で定義されているメソッド用のデフォルトの空メソッドを提供します。

BodyTag

カスタム タグが本体を使用する必要がある場合、javax.servlet.jsp.tagext.BodyTag インタフェースを実装します。この API は、コンビニエンス クラス BodyTagSupport も提供します。このクラスは、BodyTag インタフェースを実装し、このインタフェース内で定義されているメソッド用のデフォルトの空メソッドを提供します。BodyTagTag を拡張したものであり、インタフェース メソッドのスーパーセットです。

IterationTag

本体の再評価を制御する追加のメソッド doAfterBody() を定義して、Tag を拡張する、javax.servlet.jsp.tagext.IterationTag インタフェースを実装します。

タグ ハンドラは、以下のいずれかの方法で作成します。

抽象基本クラスを拡張すると、タグ ハンドラ クラスがそのインタフェース内のすべてのメソッドを実装する必要がなくなります。また、他の便利な機能を使用できるようになります。SimpleTagSupportTagSupport、および BodyTagSupport クラスが、SimpleTagTag、または BodyTag インタフェースを実装し、API に組み込まれます。

タグ ライブラリには、1 つ以上のカスタム JSP タグを格納することができます。タグ ライブラリは、タグ ライブラリ記述子 (.tld) ファイルで定義します。TLD は各タグの構文を記述し、その機能を実行する Java クラスにそのタグを関連付けます。

 


カスタム タグ ライブラリ

JSP タグ ライブラリは、1 つ以上のカスタム JSP タグを格納しており、タグ ライブラリ記述子 (.tld) ファイルで定義されます。JSP ページからカスタム タグ ライブラリを使用するには、以下のように <%@ taglib %> ディレクティブを使用してそのタグ ライブラリ記述子を参照します。次に例を示します。

  <%@ taglib uri="myTLD" prefix="mytaglib" %>

uri

JSP エンジンは、Web アプリケーション デプロイメント記述子 (web.xml)<taglib-uri> 要素で定義した uri と、この uri 属性を照合することによって、タグ ライブラリ記述子ファイルを見つけようとします。たとえば、上の taglib ディレクティブの myTLD は、次のように Web アプリケーション デプロイメント記述子のタグ ライブラリ記述子 (library.tld) を参照します。
<taglib>
  <taglib-uri>myTLD</taglib-uri>
  <taglib-location>library.tld</taglib-location>
</taglib>

prefix

prefix 属性は、タグ ライブラリにラベルを割り当てます。カスタム JSP タグを使用してページを作成する場合は、このラベルを使って関連するタグ ライブラリを参照します。たとえば、上の例のライブラリ (mytaglib) が newtag という新しいタグを定義した場合、このタグを JSP ページで使用するには、以下のように記述します。
<mytaglib:newtag>

詳細については、「タグ ライブラリ記述子の作成」を参照してください。

 


カスタム タグのフォーマット

カスタム タグのフォーマットは、空タグと呼ばれる空のものか、本体付きタグと呼ばれる本体を含むものです。どちらのタイプのタグも、そのタグを実装する Java クラスに渡される複数の属性を受け付けます。詳細については、「タグ本体内の例外処理」を参照してください。

空タグの形式は次のとおりです。

<mytaglib:newtag attr1="aaa" attr2="bbb" ... />

本体付きタグの形式は次のとおりです。

<mytaglib:newtag attr1="aaa" attr2="bbb" ... >
body
</mytaglib:newtag>

タグ本体には、多くの JSP 構文、およびネストされた本体を持つ別のカスタム JSP タグを入れることができます。タグは、お互いの内部で任意のレベルにネストできます。次に例を示します。

<mytaglib:tagA>
<h2>This is the body of tagA</h2>
You have seen this text <mytaglib:counter /> times!
<p>
<mytaglib:repeater repeat=4>
<p>Hello World!
</mytaglib:repeater>
</mytaglib:tagA>

上の例では、3 つのカスタム タグを使用して、本体付きタグの中にタグをネストする方法が示されています。これらのタグは、以下のように機能します。

 


カスタム タグの機能

カスタム タグは、以下のタスクを実行できます。

 


JSP タグ ライブラリの作成とコンフィグレーション : 手順の例

カスタム JSP タグを作成および使用するには、以下の手順を実行します。

  1. タグ ハンドラ クラスを記述します。JSP でカスタム タグを使用する場合、このクラスはそのタグの機能を実行します。タグ ハンドラ クラスでは、次の 3 つのインタフェースのいずれかが実装されます。
  2. javax.servlet.jsp.tagext.BodyTag

    javax.servlet.jsp.tagext.Tag

    javax.servlet.jsp.tagext.SimpleTag

    タグ ハンドラ クラスは、タグ ライブラリの一部として実装されます。詳細については、「タグ ハンドラの実装」を参照してください。

  3. JSP ソース内で、JSP <taglib> ディレクティブを使用してタグ ライブラリを参照します。タグ ライブラリは、JSP タグを集めたものです。このディレクティブを JSP ソースの先頭に挿入します。詳細については、「JSP タグ ライブラリのコンフィグレーション」を参照してください。
  4. タグ ライブラリ記述子 (TLD) を記述します。TLD は、タグ ライブラリを定義し、タグ ハンドラ クラス名、属性、タグに関するその他の情報など、各タグに関する追加情報を提供します。詳細については、「タグ ライブラリ記述子の作成」を参照してください。
  5. TLD を、Web アプリケーション デプロイメント記述子 (web.xml) で参照します。
  6. JSP でカスタム タグを使用します。詳細については、「JSP タグ ライブラリのコンフィグレーション」を参照してください。

  ページの先頭       前  次