2005.10.03 株式会社四次元データ 宮澤了祐
JSP 11章 SimpleTagによるカスタムタグの作成
- 11.1. SimpleTagとは
- 11.2. SimpleTagへの移植
- 11.3. SimpleTagの使用
- 11.4. SimpleTagSupport
11.3. SimpleTagの使用
Tagインタフェースを実装して作成したカスタムタグと同様にタグ定義ファイルを作成して使用しますが、 J2EE1.4になったことでDTDベースだった定義ファイルがXMLSchmeで定義されるようになりました。
J2EE1.4へweb.xmlを対応させるにはこちらを参考してください。
web.xmlの<jsp-config>以下の<taglib>以下に設定します。
<jsp-config> <taglib> <taglib-uri>http://www.techscore.com/MySimpleTag</taglib-uri> <taglib-location>/WEB-INF/tld/MySimpleTag.tld</taglib-location> </taglib> ... </jsp-config>
「taglib-uri」にカスタムタグを定義するURIを設定し、「taglib-location」にTLDファイルのパスを設定します。
TLDファイルの作成
タグライブラリの情報を設定するTLDファイルを作成します。 TLDファイルもDTDベースからXMLSchemaベースに変更となりました。 SimpleTagを使用する場合、次のように変更する必要があります。
<JSP1.2のTLDファイル>
<?xml version="1.0" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> ...
<JSP2.0に変更後>
<?xml version="1.0" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> ...
以下はタグライブラリ定義ファイルの主な設定要素です。
taglib要素
tlib-version | 必須 | タグライブラリのバージョン。必ず「1.0」を指定すること。 |
short-name | 必須 | タグライブラリの略称。 |
tag | カスタムタグの設定。カスタムタグの数だけ繰り返す。詳細は次表で。 |
tag要素
name | 必須 | カスタムタグの名前。これがJSPページで使用するタグの名前になる。 | ||||||||
tag-class | 必須 | タグハンドラのクラス名。 | ||||||||
body-content |
以下の内のどれかを指定。
|
|||||||||
attribute | タグに指定出来る属性を指定します。以下を参照してください。 |
attribute要素
name | 必須 | 属性の名前を指定します。 |
required | 属性が必要かどうかを「true」または「false」で指定します。 | |
rtexprvalue | 属性値に式が使用できるかを「true」または「false」で指定します。ディフォルトは「false」です。 | |
type | 属性の型を指定します。 | |
fragment | 属性値がfragmentかどうかを「true」または「false」で指定します。fragmentについては13章で解説します。 |
ここで作成したMySimpleTagの設定部分は以下のようになります。
<?xml version="1.0" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>myTag</short-name> <tag> <name>MySimpleTag</name> <tag-class>MySimpleTag</tag-class> <body-content>empty</body-content> </tag> </taglib>
呼び出し部分は今までと変わりません。 JSPファイルのtaglibディレクティブにURIとprefixを記述するだけです。
<%@ taglib uri="http://www.TechScore.com/MySimpleTag" prefix="MyTag" %> <MyTag:MySimpleTag />
以下のように出力されれば成功です。
2005/08/31