2010-10-29 9 views
13

Ho cercato più a lungo di quanto vorrei ammettere per far funzionare JSTL in Eclipse (e in definitiva sotto GAE/J). Ho scaricato Eclipse, l'estensione per Google App Engine per Eclipse e JSTL (http://download.java.net/maven/1/jstl/jars/ - jstl-1.2.jar si trova nella directory WEB-INF \ lib).Quali file JAR sono necessari per Eclipse per utilizzare JSTL in modo che funzioni in definitiva su GAE/J?

Il mio codice è sotto insieme con l'uscita:

<%@ 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'errore che ottengo è:

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 

Dall'ultimo post su questa pagina non credo che ho bisogno di uno standard. jar (http://forums.sun.com/thread.jspa?threadID=701267) e in ogni caso non sono riuscito a trovarne uno sul sito download.java.com di Oracle insieme al jar jstl.

EDIT 4: ora funziona - Passi:
1) utilizzare la versione di Apache
2) In realtà includere il file jar nel percorso di generazione (tasto destro del mouse il progetto Eclipse e ha colpito Proprietà -> Java Build Path -> Biblioteche -> Aggiungi classe cartella ..., la guerra/WEB-INF/lib non è a quanto pare sul percorso di generazione di default)
3) Aggiungere il file c.tld alla guerra/WEB-INF/TLD

Marchio il tuo aspetto web.xml:

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

Il test jsp contenuto del file:

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

Questo è trange: ho lo stesso problema con jstl.jar e se ho scaricato da dove dici che ha funzionato. –

risposta

6

Assicurarsi che la dichiarazione di root web.xml conforme almeno 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> 

Oppure, se il servletcontainer supporta, preferiscono 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 se supporta l'ultima version3.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> 

Altrimenti tutto ricadrà per almeno modus sostenuto e i taglioli possono rompersi in quel modo.

Assicurarsi inoltre di non aver perso i file tld che vagano nel classpath (la cartella /WEB-INF/lib, tra gli altri), si scontreranno con quelli nei file JAR. Oh, assicurati anche di non aver definito manualmente i tlds in web.xml, tienilo pulito.

+0

Hmm, ho appena ricevuto un errore aggiuntivo quando faccio questo: l'attributo "xsi: schemaLocation" deve essere dichiarato per il tipo di elemento "web-app". L'attributo "xmlns" deve essere dichiarato per il tipo di elemento "web-app". L'attributo "xmlns: xsi" deve essere dichiarato per il tipo di elemento "web-app". L'attributo "versione" deve essere dichiarato per il tipo di elemento "web-app". – user45492

+0

Sbarazzati di quel DOCTYPE. Questo è specifico per Servlet 2.3. – BalusC

+0

Ancora lo stesso errore; Ho creato un nuovo progetto (questa volta senza supporto per GWT - solo GAE) e i bit web.xml che hai suggerito sono stati aggiunti automaticamente ma non appena aggiungo la riga Ho lo stesso errore ... – user45492

0

Per quanto ne so, è necessario jstl.jar e standard.jar. Metti quelli sotto WEB-INF/lib.

6

Hai solo bisogno di specificare questa dipendenza nella vostra Maven POM:

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

Nel mio codice, questo ha fornito tutto il necessario per la seguente taglib JSP per lavorare:

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
+0

Questo ha funzionato per me, (ho avuto ogni altra cosa sul posto come menzionato nelle risposte) –

22

ho avuto la stesso problema e ho semplicemente messo il prefisso = "c" alla fine della definizione taglib

prima:

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

dopo:

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

e tutte le avvertenze scompaiono da Eclipse.

+0

e l'ho fatto il contrario e risolto il problema ...? –

+1

che non può essere. qualsiasi ordine va bene – KNU

+2

Funziona per me! Questo dovrebbe essere un bug per Eclipse? – CDT

0

Aggiungi taglibs standard-impl-1.2.5 da Apache al percorso di generazione del progetto. Questo potrebbe risolvere il problema.

+0

È taglibs-standard-impl-1.2.5 uguale a jstl.jar? – gfan

Problemi correlati