0

App Engine Java SDK 1.7.2 で実行されている Web アプリがあります。このアプリには、静的コンテンツと JSP を提供するためのデフォルト以外に、フィルタもサーブレットもありません。

JSP ファイルには、次のような 1 行があります。

<% request.getRequestDispatcher( "a.html" ).include( request, response ); %>

これは java.lang.IllegalStateException: "getOutputStream has already been called" をスローしています。

「a.jsp」のような動的コンテンツの「a.html」を変更すると、すべて正常に動作します。ドキュメントには、RequestDispatcher が動的および静的コンテンツに対して機能する必要があると記載されています。

OBS:私はまだサーブレットとそれに関連するすべてを学んでいますが、ここで行っていることを達成する他の方法があることは知っています。これは単なる例であり、実際のシナリオではありません。これが予想される動作であるかどうか、およびその理由を知りたいだけです。それとも単なるバグですか?

4

2 に答える 2

1

グーグルで調べたところ、このバグは長い間存在していたことがわかりました。http://www.coderanch.com/t/165116/java-Web-Component-SCWCD/certification/RequestDispatcher-include-throws-IllegalStateException
を ご覧ください

<%@page buffer="none"%>
<%
   request.getRequestDispatcher("a.html").include(request,response);
%>
于 2012-10-12T16:39:31.120 に答える
0

いったいなぜあなたがJSPにスクリプトレットを入れているのか、それはあなたのJSPのメンテナンスを悪夢にする恐ろしい方法です。とにかく、このメソッドを呼び出す前に、リクエストがすでに送信されているように見えます。

于 2012-10-11T12:29:10.293 に答える