我使用spring deferredresult(servlet 3異步)進行ajax請求處理。但在返回了deferedresult後,我沒有在ajax請求成功方法中獲取響應對象。任何人都有任何想法這可能是什麼原因?我在配置中丟失了什麼?Spring與ajax請求延遲結果
以下是Ajax調用代碼:
function sendajaxreq() {
$
.ajax({
url : "plantView/testLink",
type : "GET",
data : "",
cache : false,
success : function(messages) {
alert(messages);
},
error : function(xhr) {
if (xhr.statusText != "abort" && xhr.status != 503) {
console
.error("Unable to retrieve chat messages. Chat ended.");
}
}
})
}
控制器代碼:
@RequestMapping(value = "/testLink", method = RequestMethod.GET)
@ResponseBody
public DeferredResult<Map<String, WebView>> testLink() {
DeferredResult<Map<String, WebView>> chartsResult = new DeferredResult<Map<String, WebView>>();
Map<String, WebView> res = processSampleReq();
chartsResult.setResult(res);
chartsResult.onCompletion(new Runnable() {
@Override
public void run() {
System.out.println("deffered res completed");
}
});
return chartsResult;
}
即使返回chartsResult我得到消息,因爲空的AjaxCall的成功方法之後。
在web.xml中,我爲緩衝結果工作所作的唯一更改是爲調度程序servlet和文件管理器映射添加了異步支持。
我使用的是Spring 3.2.0.RELEASE版本和Tomcat 7.0.34。
謝謝, Dipti。
哪裏是代碼..? –
其中是客戶端代碼,控制器代碼,web.xml /配置類? –
請參閱編輯的問題。 – Ditpi