[英]IllegalStateException: getOutputStream() has already been called for this response on retrieving image
[英]IllegalStateException: getOutputStream() has already been called for this response
我有一個包含表格的 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)
我檢查了有關此問題的現有問題,但沒有任何好處。 我沒有在代碼中使用腳本。
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();
}
不要在JQuery中out
對象。 它是JSP中OutputStream的隱式對象:
$(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);
});
當返回的數據具有遞歸關系時,也會拋出相同的異常:例如,對象 A 具有對象 B 的集合並且對象 B 具有類型 A 的屬性。
A: {
id:23,
Collection: [
B:{
id:21,
parent: A
}
]
}
Soln:在對象 B 內的屬性上添加 jsonIgnore
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.