私は、春のJPetStoreの例を追跡しようとしていますが、libタグspringを参照する行のJSPページでエラーが発生します。
「http://www.springframework.org/tags」のタグライブラリ記述子が見つかりません
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
このライブラリのURLは何ですか?
このURLへの直接的な依存を回避する方法はありますか?
前もって感謝します
次に、web.xmlを開きます。サンプルコードは次のとおりです。
<taglib>
<taglib-uri>/WEB-INF/spring.tld</taglib-uri>
<taglib-location>/WEB-INF/spring.tld</taglib-location>
</taglib>
次に、jarファイルがurシステムのどこにあるかを示すtaglibが示されます。
<%@ taglib prefix="spring" uri="/WEB-INF/spring.tld" %>
古い質問ですが、タグライブラリhttp://www.springframework.org/tags
はspring-webmvc
パッケージで提供されています。 Mavenでは、次の行をpom.xml
に追加してプロジェクトに追加できます。
<properties>
<spring.version>3.0.6.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
Mavenなしで、そのjarをクラスパスに追加するだけです。いずれにしても、tldファイルを直接参照する必要はありません。自動的に検出されます。
@とtaglibの間のスペースを削除すると、私にとってはうまくいきませんでした:<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
Mavenを使用している場合は、次の依存関係を使用します。
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
<version>3.1.4.RELEASE</version>
</dependency>
springs mvcの依存関係を追加する必要があります
あなたのポンポンにそれを追加するトレイ
<!-- mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
TLDはspring.jar
。アプリケーションはそのURLに依存しません。タグライブラリを識別するための一意の名前として使用されます。 URIを「/ spring-tags」にすることもできますが、URLを使用するのはかなり一般的なことです。
最初にEclipse(kepler)からデプロイするときにweblogic 12cとmavenで同じ問題が発生しました(コンソールからデプロイしてもエラーは発生しませんでした)。
このページに記載されている他の解決策は役に立ちませんでした。
私のwarモジュールのweb\WEB-INFフォルダーにspring.tld spring-form.tld spring-webmvc jar(リポジトリにあります)のファイルを抽出しました。
フレッシュビルドを行いました。 (Eclipseから)weblogic 12cにデプロイし、アプリケーションをテストしましたが、エラーはなくなりました。
spring.tld spring-form.tldファイルを削除した後、再度削除しました。アプリケーションを再構築して再デプロイすると、エラーは再び表示されませんでした。
私は、ファイルが戦争でなくなっていて、実際に存在していなかったかどうかを二重にチェックしました。
これが同様の問題で他の人を助けることを願っています...
最終的にRADを設定してMavenベースのプロジェクトをビルドしましたが、Spring taglibを使用するページに移動すると次の例外が発生しました。
JSPG0047E:uriのタグライブラリを見つけることができません http://www.springframework.org/tags at com.ibm.ws.jsp.translator.visitor.tagfiledep.TagFileDependencyVisitor.visitCustomTagStart(TagFileDependencyVisitor.Java: 76)...
EARを構成した方法では、すべてのjarはWARのWEB-INF/libではなくEARにありました。 JSP 2.0仕様によれば、WEB-INFのすべてのサブディレクトリでタグライブラリが検索されると考えられているため、この問題が発生しています。私の解決策は、tldファイルをコピーしてWEB-INF/libまたはWEB-INFの下に置くことでした。
直接リンクが必要な場合:
またはリポジトリから:
JCenter: link
Maven Central: link
そして、Gradleの依存関係として必要な場合:
コンパイル 'org.springframework:spring-webmvc:4.1.6.RELEASE
Spring-formの詳細: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/spring-form.tld.html
この問題は、通常、インターネットからタグlib URLをコピーして貼り付けるときに発生します。通常、引用符""
http://www.springframework.org/tags が埋め込まれているURLは正しくない可能性があります。引用符を削除して、手動で入力してください。これで問題は解決しました。
私はSpring-Bootを使用していましたが、私にとってはPom.xmlで以下のカットアンドペーストが機能しました。ファイルが同期していない可能性があります。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
タグライブラリのコア依存関係:
> <dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
別のケースがあります。
さまざまなポートレットアプリケーションwarにいくつかのポートレットがあり、それらはすべてspringを使用しています。そのため、各戦争のサイズを縮小するために、WebSphere Portalサーバーにスプリングjar用の共有ライブラリーを作成しました。
ただし、jspファイルから参照されるスプリングフォームタグがないという上記と同じ問題に遭遇しました。
解決するために、spring-form.tldファイルをWEB-INF /ディレクトリにコピーし、warを再デプロイしましたが、うまくいきました。
それが私のものと同様の問題を抱えている人に役立つことを願っています。