ajax PUT调用因内部服务器错误而失败

时间:2013-11-28 05:45:21

标签: jquery ajax google-chrome spring-mvc put

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);

    } 

*******************************************************************************

1 个答案:

答案 0 :(得分:0)

解决了它。这个问题在控制台本身很明显。我很糟糕。控制器期望List映射到该方法。但是我收到了FeedBack [](只是Array)。我将类型更改为FeedBack [] as(@RequestBody FeedBack feedback []),现在它在服务器端工作正常。但它现在返回一个解析错误文本。虽然它在后端工作正常。

相关问题