webentwicklung-frage-antwort-db.com.de

Welche JAR-Dateien werden für Eclipse benötigt, um JSTL zu verwenden, damit es letztendlich auf GAE/J funktioniert?

Ich habe länger versucht, JSTL unter Eclipse (und letztendlich unter GAE/J) zum Laufen zu bringen, als ich zugeben möchte. Ich habe heruntergeladen Eclipse die Google App Engine-Erweiterung für Eclipse und JSTL ( http://download.Java.net/maven/1/jstl/jars/ - jstl-1.2.jar ist in der WEB- INF\lib Verzeichnis).

Mein Code ist unten zusammen mit der Ausgabe:

<%@ taglib uri="http://Java.Sun.com/jsp/jstl/core" prefix="c" %>
<HTML><HEAD><TITLE>Test Page</TITLE></HEAD><BODY>
Test Page

<c:set var="myvar" value="3"/>

</BODY></HTML>

Der Fehler, den ich erhalte, ist:

The tag handler class for "c:set" (org.Apache.taglibs.standard.tag.rt.core.SetTag) was not found on the Java Build Path 
test.jsp
[my app's path and name]
line 8
JSP Problem

Vom letzten Beitrag auf dieser Seite glaube ich nicht, dass ich ein standard.jar ( http://forums.Sun.com/thread.jspa?threadID=701267 ) brauche und auf jeden Fall nicht finden konnte eine auf der Oracle-Website download.Java.com zusammen mit der JSTL-JAR.

EDIT 4: Funktioniert jetzt - Schritte:
1) Verwenden Sie die Apache-Version
2) Fügen Sie die JAR-Datei tatsächlich in den Erstellungspfad ein (klicken Sie mit der rechten Maustaste auf das Eclipse-Projekt und wählen Sie Eigenschaften -> Java-Erstellungspfad -> Bibliotheken -> Klassenordner hinzufügen ...; war/WEB-INF/lib ist anscheinend nicht auf dem Erstellungspfad standardmäßig)
3) Fügen Sie die Datei c.tld zu war/WEB-INF/tld hinzu

Stellen Sie Ihre web.xml wie folgt dar:

<\?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://Java.Sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://Java.Sun.com/xml/ns/j2ee http://Java.Sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>JSTLExample</display-name>
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>
<jsp-config>
    <taglib>
        <taglib-uri>http://Java.Sun.com/jstl/core</taglib-uri>
        <taglib-location>/WEB-INF/tld/c.tld</taglib-location>
    </taglib>
</jsp-config>  
</web-app>

Der Inhalt der Test-JSP-Datei:

 <?xml version="1.0" encoding="UTF-8" ?>
 <%@ page language="Java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

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

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <title>Test Apache ServiceMix with JSTL</title>
 </head>
 <body>

 This is a testpage.

 <%= "hello" %>
 <c:forEach var="i" begin="1" end="10" step="1">
 <c:out value="${i}" />

 <br />
 </c:forEach>


 </body>
 </html>
13
user45492

Stellen Sie sicher, dass Ihre web.xml-Root-Deklaration mindestens Servlet 2.4 entspricht.

<web-app
    xmlns="http://Java.Sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/j2ee http://Java.Sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <!-- Config here. -->

</web-app>

Oder wenn Ihr Servletcontainer dies unterstützt, ziehen Sie 2.5 vor:

<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_2_5.xsd"
    version="2.5">

    <!-- Config here. -->

</web-app>

O wenn es die neueste Version 3.0 unterstützt

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

Andernfalls wird alles auf den am wenigsten unterstützten Modus zurückgesetzt, und Taglibs können auf diese Weise kaputt gehen.

Stellen Sie außerdem sicher, dass Sie keine tld-Dateien im Klassenpfad (unter anderem im /WEB-INF/lib-Ordner) herumlaufen, da diese mit denen in JAR-Dateien kollidieren. Stellen Sie außerdem sicher, dass Sie die tlds nicht manuell in web.xml definiert haben, halten Sie sie sauber.

6
BalusC

Ich hatte das gleiche Problem und ich setzte einfach das Präfix = "c" am Ende der Taglib-Definition ein

vor: 

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

nach dem: 

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

Und alle Warnungen verschwinden von Eclipse. 

25
user1716015

Sie müssen diese Abhängigkeit nur in Ihrem Maven POM angeben:

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

In meinem Code lieferte ich damit alles, was ich brauchte, damit die folgende JSP-Taglib funktioniert:

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

Fügen Sie taglibs-standard-impl-1.2.5 from Apache zum Build-Pfad des Projekts hinzu. Dies kann das Problem beheben.

0
Praveer Satyam

Soweit ich weiß, brauchen Sie jstl.jar und standard.jar. Stellen Sie diese unter WEB-INF/lib.

0
kukudas

fügen Sie jstl-1.2-sources.jar in Ihr Tomcat\lib-Verzeichnis hinzu

0
ZEESHAN KHAN