2009-02-27 13 views
6

Sto provando a eseguire un'applicazione nel molo che funziona correttamente in Tomcat 5.5. L'app utilizza servlet 2.4 e JSP 2.0.Jasper in Jetty 6 genera un'eccezione per il tag JSTL

Molo/Jasper sta gettando questa eccezione:

org.apache.jasper.JasperException: /WEB-INF/tiles/layout/main.jsp(85,55) PWC6340: According to the TLD, rtexprvalue is true, and deferred-value is specified for the attribute items of the tag handler org.apache.taglibs.standard.tag.rt.core.ForTokensTag, but the argument for the setter method is not a java.lang.Object 

Una cosa strana, non riesco a trovare il dominio di primo livello da nessuna parte. Sembra di ottenerlo per magia che non capisco. È possibile ottenere un TLD errato?

È anche difficile capire da dove viene caricato org.apache.taglibs.standard.tag.rt.core.ForTokensTag. Eclipse non lo trova nel percorso di caricamento del progetto.

Eventuali suggerimenti benvenuto ...

risposta

6

Jetty include la propria libreria JSTL e non v'è alcuna necessità di includere vasi standard e di base del taglib jakrta.

Se si mettono i vasi di jakartat di taglib nell'applicazione Web, esiste un conflitto nel tag forTokens che causa questo errore mentre gli altri tag funzionano correttamente. Suggerisco di rimuovere l'implementazione di taglib di jakarta dalla tua app Web e fare affidamento su Jetty's, o smettere di usare forTokens.

4

@Guss è corretto, l'unica via d'uscita sembra essere quella di evitare l'uso di c:forTokens.

esempio alternativo per c:forTokens utilizzando c:forEach:

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

<c:forTokens items="${input}" delims="," var="i"> 
    <!-- do stuff with ${i} --> 
</c:forTokens> 

<c:forEach items="${fn:split(input,',')}" var="i"> 
    <!-- do stuff with ${i} --> 
</c:forEach> 
+0

@Guss @Gareth Grazie per l'informazione, ho avuto lo stesso problema. – jomaora

Problemi correlati