この質問に(私には理解できないほど)受け入れられた答えがあったとしても、私は自分で試してみる義務があると感じています。本当の答えは BalusC のコメントに含まれており、迷子の.tld
ファイルが横たわっていることを示唆するのWEB-INF
は本当に悪いアドバイスです。私の意図は、OPが尋ねていたStruts2の正確なバージョン(v2.1.8)を使用してこれを拡張することです。これは、 Apacheの履歴アーカイブからダウンロードしました。
struts-html.tld ファイルがどの .jar ファイルにあるかわかりません。
Struts2 にはありませんstruts-html.tld
。代わりに、次のものがあります。
struts-tags.tld
のMETA-INF
ディレクトリにあり、Struts1にあると思われるようなすべての標準 Struts タグstruts2-core-2.1.8.jar
が含まれています。struts-html.tld
tiles-jsp.tld
のMETA-INF
ディレクトリにあり、Struts1tiles-jsp-2.0.6.jar
にあったものに対応します。struts-tiles.tld
- 質問に直接関係のない SiteMesh などの TLD がいくつかあります。
Strutsが提供するtaglibディレクトリに指定されたhtmlタグをJSPページで利用したい。しかし、それを使用する方法がわかりません。taglib ディレクティブの使い方は知っていますが、ソースから .tld ファイルがバージョン 1.2.8 以降の .jar ファイルに埋め込まれていることを知りました。
それは正しいです。一般的な操作方法は次のとおりです。
- サーブレット コンテナが起動すると、
WEB-INF/lib
ディレクトリを調べて、.jar
そこで見つかったファイルをロードします。これは、Struts2 ライブラリを配置する必要がある場所です。
- これらの
.jar
ファイル内では、すべての TLD がMETA-INF
ディレクトリに存在することが期待されます。明らかに、上で述べたように、これはすでに の場合であるためstruts2-core-2.1.8.jar
、何もする必要はありません。
- サーブレット コンテナは、TLD をロードするときに
<uri>
、ルート要素内の要素を探し<taglib>
、その TLD とその URI の間のマッピングを保存します。それに応じて、この URI は.jsp
TLD を参照するためにファイルで使用されます。
の場合struts2-core-2.1.8.jar
、URI は/struts-tags
であるため、このようなファイルで参照する必要があり.jsp
ます (もちろん、prefix
属性を好みに合わせて変更できます)...
<%@ taglib uri="/struts-tags" prefix="s" %>
...そしてその後、たとえば次のように使用します。
<s:form action="HelloWorld">
(...)
</s:form>