3

Tomcat 5.5.25 で現在実行している Web アプリケーションがあります。特にjspとUIの変更の迅速なリフレッシュ時間を利用するために、Jetty 6に移植しようとしています。

私の JSP ファイルは JSP 2.0 に準拠しているため、maven jetty プラグイン Web サイトで提案されている構成を使用して、maven で jetty を実行しています。この構成は、Apache の jasper JSP コンパイラ バージョン 5.5.15 をロードします。(maven リポジトリで利用できるのは 5.5.23 ですが、結果は同じです。)

桟橋の下で、タイルを使用して構成されている私のホームページが、ServletResponseWrapperInclude.getOutputStream() で IllegalStateException で爆発します。明らかに、Tomcat ではこれは行われません。

ジャスパーが Tomcat ではなく桟橋で文句を言う原因となるタイルとインクルードが何であるかを理解するのに苦労しています。

4

2 に答える 2

1

これはあまり答えではないかもしれませんが、タイルに空のタイルが含まれている場合にこのエラーが発生することがわかりました。

マスタータイルJSPを調べ、空のタイルへの参照を削除することで、この問題を解決します。

于 2009-03-24T22:39:51.423 に答える
0

うわー - 素敵な発見!私が偶然見つけた別の解決策は、タイル インクルードを空/null 定義ではなく、空の文字列として定義することです。

つまり、タイルを次のように定義すると、説明した IllegalStateException にヒットします。

<definition name="login" extends="main.layout">
    <put name="title" value="Login" type="definition" />
    <put name="headinclude" value="" type="definition" />
    <put name="body" value="/WEB-INF/tiles/login.jsp" type="page" />
</definition>

一方、次のようにタイルを定義すると、例外はなくなります。

<definition name="login" extends="main.layout">
    <put name="title" value="Login" type="definition" />
    <put name="headinclude" value="" type="string" />
    <put name="body" value="/WEB-INF/tiles/login.jsp" type="page" />
</definition>

奇妙なバグ、奇妙な解決策ですが、私にとってはうまくいきます!

于 2010-03-15T17:29:38.873 に答える