Jasper в Jetty 6 создает исключение для тега JSTL - PullRequest
6 голосов
/ 27 февраля 2009

Я пытаюсь запустить приложение в Jetty, которое отлично работает в Tomcat 5.5. Приложение использует сервлет 2.4 и JSP 2.0.

Причал / Джаспер выдает это исключение:

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

Одна странность, я нигде не могу найти TLD. Кажется, это получается магическим путем, чего я не понимаю. Возможно, получен неправильный TLD?

Сложно сказать, откуда загружается org.apache.taglibs.standard.tag.rt.core.ForTokensTag. Eclipse не находит его в пути загрузки проекта.

Любые советы приветствуются ...

Ответы [ 2 ]

6 голосов
/ 12 марта 2009

Jetty включает в себя собственную библиотеку JSTL, и нет необходимости включать стандартные jarrta taglib и основные jar-файлы.

Если вы помещаете jarartat jarartat taglib в свое веб-приложение, возникает конфликт в теге forTokens, который вызывает эту ошибку, в то время как другие теги работают хорошо. Я предлагаю либо удалить реализацию jakarta taglib из вашего веб-приложения и полагаться на Jetty, либо прекратить использование forTokens.

4 голосов
/ 09 июня 2010

@ Гусс верен, похоже, единственный выход - избежать использования c:forTokens.

пример альтернативы c:forTokens с использованием 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>
...