web-dev-qa-db-fra.com

Quels fichiers JAR sont nécessaires pour qu'Eclipse utilise JSTL afin que cela fonctionne finalement sur GAE/J?

J'essaie depuis plus longtemps que j'aimerais admettre que JSTL fonctionne sous Eclipse (et finalement sous GAE/J). J'ai téléchargé Eclipse, l'extension du moteur d'applications Google pour Eclipse et JSTL ( http://download.Java.net/maven/1/jstl/jars/ - jstl-1.2.jar est dans le répertoire WEB. Répertoire INF\lib).

Mon code est ci-dessous avec la sortie:

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

L'erreur que je reçois est:

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

Depuis le dernier message de cette page, je ne pense pas avoir besoin d'un fichier standard.jar ( http://forums.Sun.com/thread.jspa?threadID=701267 ) et, en tout cas, je n'ai pas trouvé un sur le site Oracle download.Java.com avec le jar jstl.

EDIT 4: Fonctionne maintenant - Étapes:
1) Utilisez la version Apache
2) En fait, incluez le fichier jar dans le chemin de construction (cliquez avec le bouton droit de la souris sur le projet Eclipse et sélectionnez Propriétés -> Chemin de construction Java -> Bibliothèques -> Ajouter un dossier de classe ...; the war/WEB-INF/lib est apparemment pas sur le chemin de construction par défaut)
3) Ajoutez le fichier c.tld à war/WEB-INF/tld

Faites en sorte que votre fichier web.xml ressemble à:

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

Le contenu du fichier jsp test:

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

Assurez-vous que votre déclaration racine web.xml est conforme au moins Servlet 2.4.

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

Ou si votre servletcontainer le supporte, préférez la version 2.5:

<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 s'il supporte la dernière version 3.0

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

Sinon, tout retombera sur le mode le moins supporté et les taglibs risquent de se briser de la sorte.

Assurez-vous également que vous n’avez pas de fichiers tld en vrac errant dans le chemin de classe (le dossier /WEB-INF/lib, entre autres), ils entreront en conflit avec ceux des fichiers JAR. Oh, assurez-vous également que vous n'avez pas défini manuellement les tlds dans web.xml, gardez-les propres.

6
BalusC

J'ai eu le même problème et j'ai simplement mis le préfixe = "c" à la fin de la définition de taglib

avant: 

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

après: 

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

Et tous les avertissements disparaissent d'Eclipse. 

25
user1716015

Il vous suffit de spécifier cette dépendance dans votre POM Maven:

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

Dans mon code, cela fournissait tout ce dont j'avais besoin pour que le taglib JSP suivant fonctionne:

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

Ajoutez taglibs-standard-impl-1.2.5 from Apache au chemin de génération du projet. Cela peut résoudre le problème.

0
Praveer Satyam

Pour autant que je sache, vous avez besoin de jstl.jar et standard.jar. Mettez ceux-ci sous WEB-INF/lib.

0
kukudas