JSP では、インクルードされたファイル内のタグ ライブラリを再宣言する必要がありますか?
質問
これが 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"%>
これが役立つことを願っています。
他のテンプレートシステムで定義は、通常は持ち越さ。私はあなたが再びそれを使用する必要がありますなぜ見ていけない。