6

ベースのアプリケーションを開発してStrutsいます。私はStrutsが初めてです。htmlが提供する taglib ディレクトリに指定された tagsStrutsを、ページ内で使用したいと考えていJSPます。

しかし、それを使用する方法がわかりません。taglib ディレクティブの使い方は知っていますが、ソースから .tld ファイルがバージョン 1.2.8 以降の .jar ファイルに埋め込まれていることを知りました。Struts バージョン 2.1.8 を使用しています。

ファイルがどの .jar ファイルにあるかわかりませんstruts-html.tld

4

3 に答える 3

7

この図には Struts 1.3.10 を使用しています。

  1. ここから最新の struts ライブラリをダウンロードします ( http://struts.apache.org/download.cgi#struts1310 )。Full Distributionは、Struts TLD を含む war ファイルが含まれているため、ダウンロードする必要があることを忘れないでください。
  2. Web アプリケーションで、ダウンロードしたアーカイブ ファイル内のすべての lib を/WEB-INF/libフォルダーにコピーします。
  3. JSTL ライブラリ (Struts でうまく動作) については、こちら ( http://java.sun.com/products/jsp/jstl/ )にアクセスしてください。
  4. Struts TLD と JSTL Tld を取得したら、それらを/WEB-INF/tld/フォルダーの下に配置します ( /WEB-INF/ フォルダーに配置する必要があります)。
  5. web.xml で、次のものを (<web-app>要素の下に)追加します。

      <jsp-config>
        <taglib>
            <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-logic.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-nested.tld</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-nested.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-tiles.tld</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-tiles.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/sslext.tld</taglib-uri>
            <taglib-location>/WEB-INF/tld/sslext.tld</taglib-location>
        </taglib>
        <taglib>
            <taglib-uri>/WEB-INF/struts-layout.tld</taglib-uri>
            <taglib-location>/WEB-INF/tld/struts-layout.tld</taglib-location>
        </taglib>
    
        <!-- Sun's JSTL -->
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/fn</taglib-uri>
            <taglib-location>/WEB-INF/tld/fn.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
            <taglib-location>/WEB-INF/tld/fmt.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/fmt-1-0</taglib-uri>
            <taglib-location>/WEB-INF/tld/fmt-1_0.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>
            <taglib-location>/WEB-INF/tld/fmt-rt.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/fmt-1-0-rt</taglib-uri>
            <taglib-location>/WEB-INF/tld/fmt-1_0-rt.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
            <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/core-1-0</taglib-uri>
            <taglib-location>/WEB-INF/tld/c-1_0.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
            <taglib-location>/WEB-INF/tld/c-rt.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/core-1-0-rt</taglib-uri>
            <taglib-location>/WEB-INF/tld/c-1_0-rt.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>
            <taglib-location>/WEB-INF/tld/sql.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/sql-1-0</taglib-uri>
            <taglib-location>/WEB-INF/tld/sql-1_0.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>
            <taglib-location>/WEB-INF/tld/sql-rt.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/sql-1-0-rt</taglib-uri>
            <taglib-location>/WEB-INF/tld/sql-1_0-rt.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/x</taglib-uri>
            <taglib-location>/WEB-INF/tld/x.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/x-1-0</taglib-uri>
            <taglib-location>/WEB-INF/tld/x-1_0.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>
            <taglib-location>/WEB-INF/tld/x-rt.tld</taglib-location>
        </taglib>
    
        <taglib>
            <taglib-uri>http://java.sun.com/jstl/x-1-0-rt</taglib-uri>
            <taglib-location>/WEB-INF/tld/x-1_0-rt.tld</taglib-location>
        </taglib>
    </jsp-config>
    

これは、JSP から TLD を呼び出すと、Web アプリケーションが一致する<taglib-uri>ものを探し、次にその場所を<taglib-location>探し、呼び出す関連クラスを見つけることを示しています。

JSP で、これを実行できるようになりました。

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jstl/fn" prefix="fn" %>

お役に立てれば。

于 2010-03-06T21:45:24.110 に答える
2

この質問に(私には理解できないほど)受け入れられた答えがあったとしても、私は自分で試してみる義務があると感じています。本当の答えは BalusC のコメントに含まれており、迷子の.tldファイルが横たわっていることを示唆するのWEB-INF本当に悪いアドバイスです。私の意図は、OPが尋ねていたStruts2の正確なバージョン(v2.1.8)を使用してこれを拡張することです。これは、 Apacheの履歴アーカイブからダウンロードしました。

  1. struts-html.tld ファイルがどの .jar ファイルにあるかわかりません。

Struts2 にはありませんstruts-html.tld。代わりに、次のものがあります。

  • struts-tags.tldMETA-INFディレクトリにあり、Struts1にあると思われるようなすべての標準 Struts タグstruts2-core-2.1.8.jarが含まれています。struts-html.tld
  • tiles-jsp.tldMETA-INFディレクトリにあり、Struts1tiles-jsp-2.0.6.jarにあったものに対応します。struts-tiles.tld
  • 質問に直接関係のない SiteMesh などの TLD がいくつかあります。

  1. 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 は.jspTLD を参照するためにファイルで使用されます。

の場合struts2-core-2.1.8.jar、URI は/struts-tagsであるため、このようなファイルで参照する必要があり.jspます (もちろん、prefix属性を好みに合わせて変更できます)...

<%@ taglib uri="/struts-tags" prefix="s" %>

...そしてその後、たとえば次のように使用します。

<s:form action="HelloWorld">
    (...)
</s:form>
于 2015-08-26T09:04:56.823 に答える
1

BalusC は正しいです。必要なのは JAR ファイルと各 JSP/WEB-INF/libの適切なファイルだけです。taglib最初につまずいたのは、機密性の高い JSP 構文でした。一部の要素間のスペースは重要です。Stripes documentationによると、Stripes TLD のそれぞれtaglibは次のようになります。

<%@ taglib prefix="stripes" uri="http://stripes.sourceforge.net/stripes.tld" %>
于 2010-08-24T11:09:29.607 に答える