successs(userSurpriseResponse) { // success method of another ajax call
var updateFeedbackSeenURL = "/" + contextName + "/service/updateseenfeedbacks/";
var responseForSurprise = JSON.stringify(userSurpriseResponse);
var surpriseResponse = JSON.parse(responseForSurprise);
var feedback = surpriseResponse.feedback
$.ajax({
header: "Accept: application/json",
url: updateFeedbackSeenURL,
type: 'PUT',
crossDomain: false,
async: false,
cache: false,
contentType: "application/json",
data:JSON.stringify(feedback),
dataType: 'json',
success: function() {
alert("updated seenfedback");
},
error: function(xhr, ErrorText, errorThrown) {
alert("failed inside seenfedback");
return false;
}
});
}
这里,来自服务器端的userSurpriseResponse
实际上是Surprise
类的对象。 Surprise类有一个名为feedback
的属性。实际上这是一个ArrayList<FeedBack>
。我试图将整个arraylist发送回服务器,以便根据场景进行一些处理。当我发送呼叫时,我得到一个带有以下日志的apache tomcat的内部服务器Errror( 500 (Internal Server Error)
*******************************************************************************************
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.tcs.teg.msgame.core.domain.FeedBack
at com.tcs.teg.msgame.server.dao.FeedBackDAOImpl.updateSeenFeedbacks(FeedBackDAOImpl.java:123)
at com.tcs.teg.msgame.server.service.SurpriseBoxServiceImpl.updateSeenFeedbacks(SurpriseBoxServiceImpl.java:129)
at com.tcs.teg.msgame.server.controller.SurpriseBoxController.updateSeenFeedbacks(SurpriseBoxController.java:40)
*******************************************************************************************
来自ajax调用的请求映射由SurpriseBoxController.java处理,如下所示
*******************************************************************************************
from line no:40
@RequestMapping(value = "/updatefeedbackseen/", method = RequestMethod.PUT, produces = "application/json")
@ResponseBody
void updateFeedBackSeen(@RequestBody List<FeedBack> feedback) {
feedBackService.updateFeedBackSeen(feedback);
}
*******************************************************************************
答案 0 :(得分:0)
解决了它。这个问题在控制台本身很明显。我很糟糕。控制器期望List映射到该方法。但是我收到了FeedBack [](只是Array)。我将类型更改为FeedBack [] as(@RequestBody FeedBack feedback []),现在它在服务器端工作正常。但它现在返回一个解析错误文本。虽然它在后端工作正常。