webentwicklung-frage-antwort-db.com.de

Wie füge ich JSTL zu Maven hinzu?

Ich arbeite an einem JSF 2.0-Projekt mit Mojarra, PrimeFaces und Tomcat 6.x.

Ich muss c: forEach für einige Primefaces-Komponenten wie die dynamische Nummer von p: tab verwenden, aber ich habe ein Problem mit c: forEach. Alle anderen JSTL-Tags funktionieren in Nizza.

Ich habe folgenden Fehler:

Java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTagStatus

Ich benutze den folgenden xmlns:c="http://Java.Sun.com/jsp/jstl/core", Ich habe versucht, durch xmlns:c="http://Java.Sun.com/jstl/core" Zu ersetzen, aber mit dem zweiten habe ich nichts angezeigt.

Dies ist die genaue Version von 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>

Wie kann ich das beheben?

Ich kann bei Bedarf genauere Informationen geben.

EDIT: Ich habe verschiedene Bereiche hinzugefügt und ausprobiert (Laufzeit und Kompilierung), aber nichts geändert:

<dependency>
    <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
</dependency>

Die Liste der Repository:

  <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&amp;nf=1&amp;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>

Dies ist der Inhalt von $ Tomcat_HOME/lib

anmerkungen-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

31
La Chamelle

Sie müssen die JSTL-Bibliothek in Ihre Distribution aufnehmen. Dies kann durch den Behälter bereitgestellt werden, obwohl dies keine empfohlene Praxis ist. Die Maven-Abhängigkeit für die aktuelle Version (zum Zeitpunkt des Schreibens) ist hier:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

Es lohnt sich jedoch immer, im maven central repository nach Updates zu suchen.

55
La Chamelle

Wie Balus sagte, müssen Sie nur JSTL zu Ihrer pom.xml hinzufügen, da Tomcat es nicht enthält. 1.2 ist die neueste Version:

<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
</dependency>
17
Kaleb Brasee
<!-- 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>

Und dann können Sie die Java Standard-Tags und -Funktionen wie folgt auf Ihrer JSP-Seite verwenden:

<%@ taglib prefix="c" 
       uri="http://Java.Sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fn" 
       uri="http://Java.Sun.com/jsp/jstl/functions" %>

Dies funktioniert auch alleine:

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
7
Koray Tugay

Ich weiß, dass die Frage alt ist, aber sie ist in den Google-Ergebnissen hoch, also füge ich dies hinzu.

Neuere JSTL-Versionen sind (nur) unter org.glassfish.web groupId verfügbar. Beispiel:

<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>javax.servlet.jsp.jstl</artifactId>
    <version>1.2.4</version>
</dependency>
1
Nicola Isotta