6

Tomcat 5.5 で正常に動作するアプリケーションを jetty で実行しようとしています。アプリはサーブレット 2.4 と JSP 2.0 を使用します。

Jetty/Jasper はこの例外をスローしています:

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 は、プロジェクトのロード パスでそれを見つけません。

どんなヒントでも大歓迎です...

4

2 に答える 2

6

Jetty には独自の JSTL ライブラリが含まれており、jakrta taglib の標準およびコア jar を含める必要はありません。

jakartat taglib の jar を Web アプリケーションに配置すると、forTokens タグで競合が発生し、他のタグは正常に機能しているにもかかわらず、このエラーが発生します。Web アプリから Jakarta taglib の実装を削除して Jetty に依存するか、forTokens の使用を停止することをお勧めします。

于 2009-03-12T11:52:22.563 に答える
4

@Gussは正しいです。唯一の方法は、の使用を避けることです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>
于 2010-06-09T12:45:32.220 に答える