2009-02-27 9 views
6

Tomcat 5.5で正常に動作するjettyでアプリケーションを実行しようとしています。アプリはサーブレット2.4とJSP 2.0を使用します。Jetty 6のJasperがJSTLタグの例外をスローする

桟橋/ジャスパーは、この例外がスローされます。

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

任意のヒントを歓迎...

答えて

6

桟橋は、独自のJSTLライブラリが含まれ、jakrtaのtaglibの標準とコアのjarファイルを含める必要はありません。

jakartat taglibのjarファイルをWebアプリケーションに挿入すると、forTokensタグに競合が発生し、他のタグがうまく動作している間にこのエラーが発生します。私は、あなたのWebアプリケーションからjakarta taglib実装を削除し、Jetty'sに依存するか、forTokensの使用を中止することを提案します。

4

@Gussは正しいですが、唯一の方法はc:forTokensの使用を避けることです。 c:forEachを使用してc:forTokens

例の代替:

<%@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、私は同じ問題がありました。 – jomaora

関連する問題