0

我有一个在 App Engine Java SDK 1.7.2 上运行的网络应用程序。除了提供静态内容和 JSP 的默认设置外,该应用程序没有过滤器和 servlet。

在 JSP 文件中,我有一行类似的内容:

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

这是抛出一个 java.lang.IllegalStateException:“getOutputStream 已经被调用”。

如果我将“a.html”更改为“a.jsp”等动态内容,一切正常。文档说 RequestDispatcher 应该适用于动态和静态内容。

OBS:我仍在学习 Servlet 和所有相关的东西,但我知道还有其他方法可以实现我在这里所做的事情 - 这只是一个示例,而不是真实世界的场景。我只是想知道这是否是预期的行为以及原因。或者它只是一个错误?

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 中放置 scriplets,这是让你的 JSP 维护成为噩梦的可怕方式。无论如何,在您调用此方法之前,您的请求似乎已经发送。

于 2012-10-11T12:29:10.293 回答