[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 10835] JSTL item29 に関して



item29の訳を担当した中村年宏です。

JSTLについての話題です。

■
>JSTL:最近は、JSP Standard Tag Libraryと呼ばれる
>
>最近のJSP仕様では、includeでURL指定できるのではないか?
>→ 要確認(宿題)

実際にそれぞれのタグで絶対URLを試してみました。

<%@ inculude file="http://java.sun.com/"; %>とした場合、
コンパイル通りませんでした。
指定したFileが存在しないというError Messageがでました。

<jsp:include page="http://java.sun.com/"; />とした場合、
何も取り込まれませんでした。
Tomcat4.1.27では、
JSPから変換されたServletでJasperRuntimeLibrary.inculde()というメソッドが
呼び出せれていました。このメソッドの中では指定したURLがコンテキストルート
からのURLに変換されてRequestDispacher.include()が呼ばれていました。
絶対URLの指定は無理ということですね。

<c:import url="http://java.sun.com/"; />と指定した場合
ちゃんと指定したURLが取り込まれたのですが、取り込んだ先のページの相対URLが
呼び出しもとのコンテキストルートから相対URLになってしまったりして
画像などが完全に表示されませんでした。
また相対URLでリンクがはられた先にも移動できませんでした。
これは仕方ないのでしょうか?

■
ひとつ疑問があります。
JSTLを使うときにはTLDファイルは必要ないのでしょうか?
以下のサイトにはTLDファイルをWEB-INF以下に作成してweb.xmlに<taglib>要素を
追加しろとあります。
http://www-6.ibm.com/jp/developerworks/java/030808/j_j-jsp05273.html
http://www.atmarkit.co.jp/fjava/rensai2/jakarta10/jakarta10_2.html

しかしstandard Taglib 1.0.3のドキュメントのGetting Started with the 
Standard Taglibには次のように書いてあるので必要ないのかなとも思います。

To use the Standard Taglib from its Jakarta Taglibs distribution, simply copy 
the JAR files in the distribution's 'lib' directory to your application's 
WEB-INF/lib directory.
The following JAR files are included in the Standard Taglib
distribution and need to be copied to your application's WEB-INF/lib directory:
(中略)
Using the Standard Taglib libraries is simple; you simply need to import them 
into your JSP pages using the taglib directive. For instance, to import the 
'core'JSTL library into your page, you would include the following line at the 
top of your JSP page, as follows:
<%@ taglib uri="http://java.sun.com/jstl/core"; prefix="c" %>

実際、私の環境ではTLDファイルに関する設定を行わないで
<c:import>と<c:set>が正しく動作します。
(Tomcat4.1.27とstandard Taglib 1.0.3を使っています。)

TLDファイルがなくても動くのが不思議なのですが
どなたか理由をご存知でしょうか?

-- 
Nakamura Toshihiro
taedium@xxxxxxxxxxxxxxxx