PGBox
P
G
Box

tldファイル

JSPのメニューへ戻る



使用した環境
JDK 6 Update 11
Tomcat 6.0.18

JSPカスタムタグやEL関数の情報を定義するtldファイルについての説明です。


以下は、JSP2.1において使用可能な全ての要素を記述しているtldファイルの例です。
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xml="http://www.w3.org/XML/1998/namespace"
          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
          version="2.1">
    
    <!-- 
    - このタグライブラリの実装バージョン(必須)
    - 内部で使用するだけのライブラリの場合は1.0のままで問題ないが、
    - 外部公開するタグライブラリの場合は、バージョン番号を明記しておく必要がある。
    -->
    <tlib-version>1.0</tlib-version>
    
    <!-- タグライブラリに必要なJSPバージョン(省略可) -->
    <jsp-version>2.1</jsp-version>
    
    <!-- このタグライブラリの説明文(省略可) -->
    <description>サンプルのタグライブラリです。</description>
    
    <!-- ツール表示用の名前(省略可) -->
    <display-name>サンプルタグライブラリ</display-name>
    
    <!-- ツール表示用の名前:短縮版(省略可) -->
    <short-name>sampleTags</short-name>
    
    <!-- GUIツール表示用のアイコン(省略可) -->
    <icon>
        <!-- GUIツール表示用のアイコン(小:16×16)(省略可) -->
        <small-icon>/WEB-INF/sample-listener-small.jpg</small-icon>
        <!-- GUIツール表示用のアイコン(大:32×32)(省略可) -->
        <large-icon>/WEB-INF/sample-listener-large.jpg</large-icon>
    </icon>
    
    <!--
    - このタグライブラリを特定するためのURI(省略可)
    - 内部で使用するだけのタグの場合は、どのような値でも良いが、
    - 外部公開するようなライブラリの場合は、世界中で一意となるURIを指定する
    -->
    <uri>/sample</uri>
    
    <!-- 
    - JSPコンパイル時のXMLビューに対する独自の検証を行う場合に定義(省略可) 
    - これにより、強引にスクリプトレットや、特定のタグの使用を禁止する事も可能です。
    -->
    <validator>
        <!-- TagLibraryValidatorの説明文(省略可) -->
        <description>検証を行います。</description>
        
        <!-- TagLibraryValidatorを継承した検証クラスの完全修飾名(必須) -->
        <validator-class>sample.SampleTagLibraryValidator</validator-class>
    
        <!-- 初期パラメータを定義(複数可) -->
        <init-param>
            <!-- パラメータの説明文 -->
            <description>パラメータの説明</description>
            <!-- パラメータの名前 -->
            <param-name>param1</param-name>
            <!-- パラメータの値 -->
            <param-value>PARAM_1</param-value>
        </init-param>

    </validator>


    <!-- イベントリスナを定義(複数可)(省略可) -->
    <listener>
        <!-- イベントリスナの説明文(省略可) -->
        <description>リスナの説明</description>
        
        <!-- ツール表示用のイベントリスナの名前(省略可) -->
        <display-name>sample-listener</display-name>
        
        <!-- GUIツール表示用のアイコン(省略可) -->
        <icon>
            <!-- GUIツール表示用のアイコン(小:16×16)(省略可) -->
            <small-icon>/WEB-INF/sample-listener-small.jpg</small-icon>
            <!-- GUIツール表示用のアイコン(大:32×32)(省略可) -->
            <large-icon>/WEB-INF/sample-listener-large.jpg</large-icon>
        </icon>
        
        <!-- 
        - イベントリスナのクラスの完全修飾名(必須)
        - javax.servlet.ServletContextListener
        - javax.servlet.ServletContextAttributeListener
        - javax.servlet.http.HttpSessionListener
        - javax.servlet.http.HttpSessionAttributeListener
        - といったインターフェイスを用途に応じてimplementsし、
        - それぞれのイベントに関連した処理が実装されたクラスを指定する。
        -->
        <listener-class>sample.SampleListener</listener-class>
        
    </listener>


    <!-- 
    - カスタムタグを定義(複数可)(省略可) 
    - ※ カスタムタグの作成方法についてはカスタムタグの作成【基本】を参照してください。
    -->
    <tag>
        <!-- タグの説明文(省略可) -->
        <description>サンプルのタグ</description>
        
        <!-- ツール表示用のカスタムタグの名前(省略可) -->
        <display-name>sample-tag</display-name>

        <!-- GUIツール表示用のアイコン(省略可) -->
        <icon>
            <!-- GUIツール表示用のアイコン(小:16×16)(省略可) -->
            <small-icon>/WEB-INF/sample-listener-small.jpg</small-icon>
            <!-- GUIツール表示用のアイコン(大:32×32)(省略可) -->
            <large-icon>/WEB-INF/sample-listener-large.jpg</large-icon>
        </icon>

        <!-- タグの名前(必須) -->
        <name>sample</name>
        
        <!-- タグクラスの完全修飾名(必須) -->
        <tag-class>sample.SampleTag</tag-class>
        
        <!--
        - 動的なタグ属性の検証及びスクリプト変数の定義を行うTagExtraInfoクラスの完全修飾名(省略可)
        - ※ 詳細はカスタムタグの作成【動的なタグの検証とスクリプト変数の定義】を参照してください。
        -->
        <tei-class>sample.SampleTei</tei-class>
        
        
        <!--
        - ボディ部の評価方法を指定する(省略可。デフォルトはJSP)
        - JSP         :ボディ部をJSPとして評価する。
        - empty       :ボディ部を評価しない。ボディ部に記述がある場合はJSPエラーとなる。
        - scriptless  :ボディ部をJSPとして評価するが、スクリプトレットは許可しない。(EL式の記述は可能)
        - tagdependent:ボディ部はプレーンテキストとして扱われる。式やJSPタグは評価されずそのまま出力される。
        -->
        <body-content>empty</body-content>


        <!--
        - スクリプト変数の定義。(複数可)(省略可)
        - ※ スクリプト変数についてはカスタムタグの作成【スクリプト変数】を参照してください。
        <variable>
            <!-- スクリプト変数の説明文(省略可) -->
            <description>サンプル変数</description>
            
            <!-- ※<name-given>と<name-from-attribute>はどちらか一方のみを記述する -->
            <!-- 
            - スクリプト変数名が予め決まっている場合に指定する。
            - 使用するスクリプト変数名を指定する。
            - <name-from-attribute>を指定しない場合は必須。
            -->
            <name-given>sampleVar</name-given>
            
            <!--
            - 実行時にタグの属性で渡された値をスクリプト変数名として使用する場合に指定する。
            - タグの属性名を指定する。(<attribute><name>で定義されている属性名)
            - <name-given>を指定しない場合は必須。
            -->
            <name-from-attribute>attrA</name-from-attribute>
            
            <!-- 
            - スクリプト変数のクラス型を指定する(省略可)
            - デフォルトはjava.lang.String
            -->
            <variable-class>java.lang.Integer</variable-class>
            
            <!-- 
            - 新しい変数として定義するかどうかを指定する(省略可)
            - true/falseで指定。デフォルトはtrue(新しい変数を作成する)
            - falseの場合、タグの処理開始までに予めスクリプト変数が定義されている必要がある。
            -->
            <declare>true</declare>
            
            <!-- 
            - スクリプト変数のスコープを指定する。(省略可。デフォルトはNESTED)
            - NESTED  :開始タグ(doStartTag)から終了タグ(doEndTag)の間でのみスクリプト変数が使用可能
            - AT_BEGIN:開始タグ(doStartTag)以降でスクリプト変数が使用可能
            - AT_END  :終了タグ(doEndTag)以降でスクリプト変数が使用可能
            -->
            <scope>AT_BEGIN</scope>
            
        </variable>

        <!-- 属性を定義する(複数可)(省略可) -->
        <attribute>
            
            <!-- 属性の説明文(省略可) -->
            <description>サンプル属性</description>
            
            <!-- 属性の名前(必須) -->
            <name>attrA</name>
            
            <!-- 
            - 属性の指定が必須であるかどうかを指定する。(省略可) 
            - true/falseで指定。デフォルトはfalse(必須ではない)
            -->
            <required>false</required>
            
            <!-- 
            - 属性値の設定の際に、スクリプトレットやELなどの式を許可するかどうかを指定する。(省略可)
            - true/falseで指定。デフォルトはtrue(属性値に対するスクリプトレットやEL式を許可する)
            -->
            <rtexprvalue>true</rtexprvalue>
            
            <!--
            - <rtexprvalue>がtrueの場合に、データの型を指定する。(省略可)
            - デフォルトはjava.lang.String
            - スクリプトレットやEL式で与えられた値がこの要素で指定された型以外の場合はJSPエラーが発生する。
            -->
            <type>java.lang.Integer</type>
            
            <!-- 
            - JSPフラグメントを受け取る属性であるかどうかを指定する。(省略可)
            - true/falseで指定。デフォルトはfalse(JSPフラグメントを受け取らない)
            -->
            <fragment>false</fragment>
            
            <!-- 遅延評価EL式#{xxx}によって値を受け取る属性である場合に記述する。(省略可) -->
            <deferred-value>
                
                <!-- 
                - 遅延評価EL式の結果値に型の制限を設ける場合に指定する。(省略可)
                - デフォルトはjava.lang.Object(全ての型を許容する)
                -->
                <type>java.lang.String</type>
                
            </deferred-value>
            
            <!-- 遅延評価EL式#{xxx.xxx}によってメソッドを受け取る属性である場合に記述する。(省略可) -->
            <deferred-method>
                
                <!-- 
                - メソッドのシグネチャを指定する。(省略可)
                - 引数を受け取らないメソッドの場合は不要だが、引数のあるメソッドの場合は指定が必要
                -->
                <method-signature>
                    java.lang.String substring(int)
                </method-signature>
                
            </deferred-method>
            
        </attribute>

        <!-- 
        - 動的な属性定義(DynamicAttributes)を使用するかどうかを指定する。(省略可)
        - true/falseで指定。デフォルトはfalse(DynamicAttributesを使用しない)
        - ※ DynamicAttributesについてはカスタムタグの作成【動的な属性】を参照してください。
        -->
        <dynamic-attributes>false</dynamic-attributes>
        
        <!-- タグの使用方法のサンプルを記述する。(省略可)-->
        <example>
            <![CDATA[
                以下のようにして使用します...
                <s:sample attrA="xxx" />
            ]]>
        </example>
        
        <!-- ツールで使用するための拡張情報を記述する。(省略可)内容はツール側の仕様に依存する。 -->
        <tag-extension>xxx</tag-extension>
        
    </tag>
    

    <!--
    - タグファイルの定義。(複数可)(省略可)
    - <%@ taglib tagdir="/WEB-INF/tags/xxx" %>とは違い、1つずつタグファイルを指定して定義する。
    -->
    <tag-file>
        
        <!-- タグファイルの説明文(省略可) -->
        <description>サンプルタグファイル</description>
        
        <!-- ツール表示用のタグファイルの名前(省略可) -->
        <display-name>sample-tagfile</display-name>

        <!-- GUIツール表示用のアイコン(省略可) -->
        <icon>
            <!-- GUIツール表示用のアイコン(小:16×16)(省略可) -->
            <small-icon>/WEB-INF/sample-listener-small.jpg</small-icon>
            <!-- GUIツール表示用のアイコン(大:32×32)(省略可) -->
            <large-icon>/WEB-INF/sample-listener-large.jpg</large-icon>
        </icon>

        <!--
        - タグの名前(必須)
        - JSPではタグファイルのファイル名ではなく、この名前で使用する。
        -->
        <name>sampleTag</name>
        
        <!-- 
        - タグファイルのパス(必須)
        - /WEB-INF/tags 又は /META-INF/tags で始まるパスでなくてはならない。
        -->
        <path>/WEB-INF/tags/sample/sample.tag</path>
        
        <!-- タグの使用方法のサンプルを記述する。(省略可)-->
        <example>
            <![CDATA[
                以下のようにして使用します...
                <sample:sampleTag>xxx</sample:sampleTag>
            ]]>
        </example>
        
        <!-- ツールで使用するための拡張情報を記述する。(省略可)内容はツール側の仕様に依存する。 -->
        <tag-extension>xxx</tag-extension>
        
    </tag-file>


    <!-- 
    - EL関数を定義(複数可)(省略可)
    - ※ EL関数の作成方法についてはEL式【function(関数)の作成】を参照してください。
    -->
    <function>
        
        <!-- EL関数の説明文(省略可) -->
        <description>サンプルEL関数</description>
        
        <!-- ツール表示用のタグファイルの名前(省略可) -->
        <display-name>sample-function</display-name>

        <!-- GUIツール表示用のアイコン(省略可) -->
        <icon>
            <!-- GUIツール表示用のアイコン(小:16×16)(省略可) -->
            <small-icon>/WEB-INF/sample-listener-small.jpg</small-icon>
            <!-- GUIツール表示用のアイコン(大:32×32)(省略可) -->
            <large-icon>/WEB-INF/sample-listener-large.jpg</large-icon>
        </icon>

        <!-- EL関数の名前(必須) -->
        <name>sampleFunction</name>
        
        <!-- EL関数の実際のメソッドが定義されているクラスの完全修飾名 -->
        <function-class>sample.SampleFunctions</function-class>
        
        <!-- EL関数のシグネチャ -->
        <function-signature>
            java.lang.String sampleFunction(java.lang.String, int)
        </function-signature>
        
        <!-- EL関数の使用方法のサンプルを記述する。(省略可)-->
        <example>
            <![CDATA[
                以下のようにして使用します...
                ${sample:sampleFunction("ABCDE", 2)}
            ]]>
        </example>
        
        <!-- ツールで使用するための拡張情報を記述する。(省略可)内容はツール側の仕様に依存する。 -->
        <function-extension>xxx</function-extension>
        
    </function>
    
    
</taglib>






JSPのメニューへ戻る