JSP では、インクルードされたファイル内のタグ ライブラリを再宣言する必要がありますか?

StackOverflow https://stackoverflow.com/questions/1683109

  •  18-09-2019
  •  | 
  •  

質問

これが JSP でどのように機能するのかよくわかりません

しかし、

main.jsp テンプレートには次のようなものがあります。

<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
<jsp:include page="/jsp/common_head.jsp"/>

次に、common_head.jsp にこれが再び追加されます。

<%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>

これは必要ですか?

または言い換えれば

taglib 宣言はインクルード ファイルに伝播されますか?

役に立ちましたか?

解決

はい、これが必要です。前に初めて実行、すべてのJSPファイルを個別にスタンドアロンServletクラスにコンパイル/翻訳/変換されます。すべてのタグは「本物の」Javaコード/メソッドに変換されます。あなたがタグライブラリを宣言しない場合は、JSPコンパイラは、それが生成する必要がどのようなJavaコード/方法を知らない/特定のタグを呼び出します。

のTomcat例えばの場合は、JSPのコンパイルそれらのすべてのための/workフォルダ内を見てみましょう。彼らのソースを表示し、それがすべて明らかになるでしょう。

他のヒント

<jsp:include page="/jsp/common_head.jsp"/>

...タグは動的インクルードであり、インクルードするページとは独立してコンパイルされる common_head.jsp ページを動的に呼び出します。したがって、taglib ディレクティブが必要になります。

一方、 include を使用して静的インクルードを実行した場合、 指令

<%@ include file="/jsp/common_head.jsp" %>

...ファイルはこうなるはずだった コピー&ペーストした そして、それが含まれているページでコンパイルされます。その場合、taglib ディレクティブは必要ありません。

いずれの場合も、開発中に使用するタグのエディター サポートを取得するためだけに、taglib を含めることをお勧めします。

静的ファイルは、jsp:include タグを使用しても静的にインクルードされることに注意してください。

include ディレクティブ: http://java.sun.com/products/jsp/syntax/1.2/syntaxref129.html#997991

jsp には以下が含まれます: http://java.sun.com/products/jsp/syntax/1.2/syntaxref1214.html

あなたが動的なリソースを含めているとして、それはあなたが使用しているすべてのタグライブラリを含める必要がありますので、

、そのリソースは、「スタンドアロン」です。あなたはこれらのタグを使用している場合、他の質問がある...

はい、それは、JSPのコンパイルに必要です。 また、タグライブラリの代わりc.tldの下に使用することができます。

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>

これが役立つことを願っています。

他のテンプレートシステムで定義は、通常は持ち越さ。私はあなたが再びそれを使用する必要がありますなぜ見ていけない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top