我有一个包含表的JSP页面。加载页面时,将填充表。我还有一个每隔X秒的ajax调用,它必须刷新表内容。
加载时,按预期填充内容。但在ajax调用期间,它会失败,并出现以下错误:
Jul 31, 2014 3:17:16 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [SpringDispatcherServlet] in context with path [/sample] threw exception [java.lang.IllegalStateException: getOutputStream() has already been called for this response] with root cause
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:638)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:214)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:105)
at org.springframework.security.web.context.SaveContextOnUpdateOrErrorResponseWrapper.getWriter(SaveContextOnUpdateOrErrorResponseWrapper.java:109)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:190)
我检查了这个问题上存在的问题,但没有什么好结果。我没有在代码中使用scriplets。
JSP代码:
$(document)
.ready(
function() {
var performAjax = function() {
$
.ajax({
method : 'get',
contentType: 'application/json',
dataType: "json",
url : "${pageContext.request.contextPath}/refresh",
success : function(data) {
alert("got something");
},
error : function(e) {
alert('Error: ' + e);
}
});
}
setInterval(performAjax, 15000);
});
控制器代码:
@RequestMapping(value = "/refresh")
public @ResponseBody
RefresingModel refresh(ModelMap modelMap,
HttpSession session) {
return refreshService.getUpdatedData();
}
当返回的数据具有递归关系时,会引发相同的异常:例如,对象a具有对象B的集合,而对象B具有类型a的属性。
A: {
id:23,
Collection: [
B:{
id:21,
parent: A
}
]
}
解决方案:在对象B内的属性上添加jsonIgnore
不要在JQuery中使用out对象。它是用于OutputStream的JSP中的隐式对象:
$(document)
.ready(
function() {
var performAjax = function() {
$
.ajax({
method : 'get',
contentType: 'application/json',
dataType: "json",
url : "${pageContext.request.contextPath}/refresh",
success : function(data) {
alert("got something");
},
error : function(e) {
alert('Error: ' + e);
}
});
}
setInterval(performAjax, 15000);
});
稍后,在同一个JSP中,我调用一个方法,该方法最终调用jasper-reports: HttpServletResponse对象“Response”被传递给以下方法,在调用时发生错误: 我已经查看了以下堆栈溢出帖子,仍然需要一些关于如何修复此问题的指导:
我正在做关于CXF和Spring的培训,所以我写了一个非常简单的CXF演示,其中只有接口“HelloWorld”和它的实现者“HelloWorldWs”。 我想用Tomcat发布它。我编写了web.xml和applicationcontext.xml(Spring配置文件。虽然我可以发布WSDL。但是控制台列出了一个问题: 我没有使用或编写任何io函数,只是一个“sayhi”函数。我被难倒了。
代码: 我的如下所示: 在JSP中,我只是给出了一个按钮,它给出了对话框。单击该按钮后,我将获得异常。 如何避免这一点?
我正在用Spring做一个项目,我有这个问题,我谷歌了错误信息,我找到了解决方案,甚至所有关于这个问题的帖子 有人能帮忙吗?
问题内容: 我谷歌的错误消息 ,很多人说,这是因为后面的空格或换行,但在我的代码,没有一个空格或一个换行符。我在Linux上使用tomcat6。 根本原因 问题答案: 好的,你应该使用servlet而不是JSP,但是如果你确实需要…在页面顶部添加以下指令: 或者在jsp-config部分中,你的web.xml 此外flush/ close中OutputStream和返回完成时。
我正在尝试使用以下代码段在浏览器中打开pdf文件: 我收到以下错误: 我还尝试使用以下方式关闭: 有人能帮我吗?