JSPページの一番上にこれを含めました。
<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>
既にJSTL JARファイルをWEB-INF/lib
ディレクトリに配置しました。それでも、JSPはtaglibを解決できません。次のエラーが表示されます。
「 http://Java.Sun.com/jsp/jstl/core 」のタグライブラリ記述子が見つかりません
Eclipse Junoを使用しており、プロジェクトの構造を以下に示します。
「 http://Java.Sun.com/jsp/jstl/core 」のタグライブラリ記述子が見つかりません
以前の質問の1つ に基づいています。Tomcat7を使用しています。その場合、JSTL 1.2が必要です。ただし、jstl.jar
ファイルがありますが、JSTL 1.2には明らかにjstl-1.2.jar
のようにバージョン番号が含まれています。唯一のファイル名jstl.jar
は、JSTL 1.0および1.1で一般的です。このバージョンでは、standard.jar
に必要なTLDファイルを含む/WEB-INF/lib
が必要です。ただし、特定のケースでは、standard.jar
が/WEB-INF/lib
で明らかに欠落しているため、taglib URIを解決できなかったのはまさにそのためです。
これを解決するには、間違ったJARファイルを削除し、 jstl-1.2.jar をダウンロードして、/WEB-INF/lib
に完全にドロップする必要があります。それで全部です。それを抽出したり、プロジェクトのBuild Pathをいじったりする必要はありません。
そのゆるいc.tld
ファイルも削除することを忘れないでください。それは絶対にそこに属していません。これは確かにいくつかの質の悪いチュートリアルで指示されているか、インターネットの他の場所で回答されています。これは、大きな誤解と設定ミスが原因の神話です。以前のJSTLバージョンではなく、クラスパスに緩いJSTL TLDファイルを置く必要はありません。
Mavenを使用している場合は、以下の座標を使用します。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
また、web.xml
がconform 少なくとも Servlet 2.4として宣言されているため、Servlet 2.3以前として宣言されていないことも確認する必要があります。そうしないと、JSTLタグ内のEL式が機能しなくなります。ターゲットコンテナに一致する最も高いバージョンを選択し、<!DOCTYPE>
のどこにもweb.xml
がないことを確認します。 Servlet 3.0(Tomcat 7)互換の例は次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://Java.Sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- Config here. -->
</web-app>
URIは、使用しているJSTLのバージョンによって異なります。バージョン1.0の場合:
http://Java.Sun.com/jstl/core
1.1(およびそれ以降)では、次を使用する必要があります。
http://Java.Sun.com/jsp/jstl/core
私は同じ問題を抱えていましたが、jstl
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
「標準」も追加する必要がありました。
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
また、前の投稿で述べたように:
Mavenを使用している場合、pomの<dependencies>
タグは次のようになります。
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
わたしにはできる。
Jstl.jarの代わりにjstl-1.2.jarをダウンロードすると問題が解決します
javax.servlet.jsp.jstl.jarをダウンロードし、動的Webアプリケーションを開発するだけの場合は、ビルドパスとWEB-INF/lib
に追加します。
Mavenを使用して動的Webアプリケーションを開発する場合、pomファイルにjavax.servlet.jsp.jstl依存関係を追加します。
ありがとう
ニルマルライサンジェエフ
動作させるには:
ライブラリにjstlおよびstandard jarファイルを追加します。
それが役に立てば幸い.. :)
さて、私はこの投稿を読んでおり、この問題を修正するには十分ではないようです。
Tomcat 8のSpringベースのアプリケーションは動作しません。
ここに解決策があります
ステップ1⇒pom.xmlに次の依存関係を追加します
<!-- JSTL Support -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
ステップ2⇒JSPページに次の2つのステートメントをすべて追加し、<%@ page%>タグでisELIgnored = "false"属性を使用していることを確認します。
<%@ page language="Java" contentType="text/html; charset=ISO-8859-1" isELIgnored="false" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core"%>
ステップ⇒web.xmlまたは他の場所でこれまでに行った他のすべての設定を削除します:)
ステップ4⇒Tomcatをクリーニングし、Tomcatを再起動します。
サイドノート⇒実際、JSTLはTomcat 8の3.xサーブレット仕様でのみ動作します。
[http://www.kriblog.com/j2ee/jsp/jstl-with-spring-4-on-Tomcat-8.html]
web.xmlでも同様に設定する必要があります。以下のコードを参照してください。
<taglib>
<taglib-uri>http://Java.Sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/lib/c.tld</taglib-location>
</taglib>
それでも問題が発生する場合はお知らせください。
これも機能します:
<dependency>
<scope>compile</scope>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
そのため、jstl-api 1.2とともにstandard.jarの代わりにjstl 1.2を使用しました
maven依存関係を追加します。
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
<scope>compile</scope>
</dependency>
以下の両方のjarがビルドパスに存在することを確認してください。
Mavenの依存関係は次のとおりです。
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>$1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency