Mojarra、PrimeFaces、Tomcat 6.xを使用してJSF 2.0プロジェクトに取り組んでいます。
P:tabの動的な数などの一部のプライムフェイスコンポーネントにはc:forEachを使用する必要がありますが、c:forEachに問題があります。 JSTLの他のすべてのタグは素晴らしい働きをします。
私は次のエラーがあります:
Java.lang.NoClassDefFoundError:javax/servlet/jsp/jstl/core/LoopTagStatus
次のxmlns:c="http://Java.Sun.com/jsp/jstl/core"
を使用しますが、xmlns:c="http://Java.Sun.com/jstl/core"
に置き換えようとしましたが、2番目のものは何も表示されません。
これは、libの正確なバージョンです。
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.2-FCS</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.Sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.0.4-b03</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
<version>2.2</version>
</dependency>
どうすれば修正できますか?
必要に応じて、より具体的な情報を提供できます。
編集:さまざまなスコープ(ランタイムとコンパイル)を追加して試しましたが、何も変わりません:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
リポジトリのリスト:
<repositories>
<repository>
<id>central</id>
<name>Maven Repository Switchboard</name>
<layout>default</layout>
<url>http://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>maven-repository.dev.Java.net</id>
<name>Java.net Repository for Maven 1</name>
<url>http://download.Java.net/maven/1/</url>
<layout>default</layout>
</repository>
<repository>
<id>maven2</id>
<name>Java.net Repository for Maven</name>
<url>http://download.Java.net/maven/2</url>
<layout>default</layout>
</repository>
<repository>
<id>prime-repo</id>
<name>Prime Technology Maven Repository</name>
<url>http://repository.prime.com.tr</url>
<layout>default</layout>
</repository>
<repository>
<id>JBoss2</id>
<url>https://repository.jboss.org/nexus/content/repositories/public</url>
</repository>
<repository>
<id>JBoss</id>
<url>http://repository.jboss.com/maven2</url>
</repository>
<repository>
<id>EclipseLink Repo</id>
<url>http://www.Eclipse.org/downloads/download.php?r=1&nf=1&file=/rt/eclipselink/maven.repo</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>itextpdf.com</id>
<name>Maven Repository for iText</name>
<url>http://maven.itextpdf.com/</url>
</repository>
<repository>
<id>guiceyfruit.release</id>
<name>GuiceyFruit Release Repository</name>
<url>http://guiceyfruit.googlecode.com/svn/repo/releases/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
これは$ Tomcat_HOME/libのコンテンツです
注釈-api.jar catalina-ha.jar catalina-tribes.jar el-impl-2.2.jar jasper.jar jsf-api.jar
jsp-api.jar servlet-api.jar
Tomcat-dbcp.jar
Tomcat-i18n-fr.jar catalina-ant.jar
catalina.jar el-api-2.2.jar
jasper-el.jar jasper-jdt.jar
jsf-impl-2.0.4-b03.jar ojdbc6.jar
Tomcat-coyote.jar Tomcat-i18n-es.jar Tomcat-i18n-ja.jar
ディストリビューションにjstlライブラリを含める必要があります。これはコンテナによって提供される場合がありますが、推奨される方法ではありません。現在のバージョンのMaven依存関係(執筆時点)は次のとおりです。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
ただし、常に maven中央リポジトリ をチェックして更新する必要があります。
Balusが言ったように、TomcatにはJSTLが含まれていないため、pom.xmlにJSTLを追加するだけです。 1.2は最新バージョンです。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- standard.jar -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!-- JSTL -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
次に、jspページでJava Standartタグと関数を次のように使用できます。
<%@ taglib prefix="c"
uri="http://Java.Sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn"
uri="http://Java.Sun.com/jsp/jstl/functions" %>
これも単独で機能します。
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
質問は古いことは知っていますが、Googleの結果では高いので、これを追加しています。
新しいJSTLバージョンは org.glassfish.web groupId で利用可能です(のみ)。例:
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.4</version>
</dependency>