web-dev-qa-db-ja.com

web.xmlでJSPtaglibディレクティブを宣言します

次のようなtaglibディレクティブを宣言できることを読んだことを覚えているようです。

<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>

web.xmlで。これにより、taglibが使用されるすべてのJSPファイルでこのディレクティブを複製する必要がなくなります。誰かが教えてもらえますかhowこれらのディレクティブはweb.xmlに追加できますか?

13
Dónal

Web.xmlのtaglib要素は、上記のtaglibディレクティブとは異なる目的を果たします。

Davidが言ったように、各ページにはtaglibディレクティブが必要です。

一般的なtaglibを使用するページが多数ある場合は、taglibディレクティブをインクルードファイルに入れ、このファイルを各ページにインクルードすることで、これをショートカットできます。ただし、どのように実行しても、taglibディレクティブは何らかの方法でページに配置する必要があります。

各ページに含める必要のあるタグは次のようになります。

<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>

カスタムの場所にカスタムのtaglibがある場合は、webappルートを基準にした場所を指定することもできます。

 <%@ taglib prefix="ex" uri="/taglib.tld" %>

taglibディレクティブをさらに読む

Web.xmlのtaglibディレクティブは、タグurisをtaglibの物理的な場所にマップします。 JSP 2.0以降、準拠コンテナは一連の標準の場所を調べてtaglibを自動検出しようとするため、これはオプションです。/WEB-INFとそのサブディレクトリ、/ META-INFもJARファイル用です。

Web.xmlでは次のようになります。

<taglib>
  <taglib-uri>
    http://www.example.com/taglib
  </taglib-uri>
  <taglib-location>
    /taglib.tld
  </taglib-location>
</taglib>

そして、taglibは次のようにJSPページで参照されます(各ページのtaglibディレクティブは避けられません!):

<%@ taglib prefix="ex" uri="http://www.example.com/taglib" %>

これは、上記のtaglibディレクティブに対して示した2番目の例と同等です。最大の違いは、taglibの場所を指す方法にあります。

このページ もう少し情報が含まれています。

27
Athena

申し訳ありませんが、少し間違えています。ページでtaglibを使用する場合は、ページ上にtaglibディレクティブが必要です。すべてのページがインクルードディレクティブとともにインクルードするインクルードファイルに共通のtaglibディレクティブを配置できますが、コンパイル時にtaglibディレクティブが存在する必要があります。

Web.xmlにtaglib要素を含めず、代わりに、WEB-INF/libのtaglibjarファイル内にあるTLDの「uri」要素で使用されるURI値をtaglibディレクティブで指定することをお勧めします。 。

5
David M. Karr