在对 Spring 控制器的 jQuery AJAX 调用中找不到 404 错误

Mad*_*esh 5 java ajax jquery spring json

我是春天的新手。我生成如下 JSON:

[
    {
        "customer" : "16", "project" : "19",
        "phase" : "47", "approver" : "5",
        "date1" : "", "date2" : "",
        "date3" : "", "date4" : "",
        "date5" : "", "date6" : "",
        "date7" : "", "activity" : "1"
    },

    {
        "customer" : "17", "project" : "20",
        "phase" : "48", "approver" : "3",
        "date1" : "", "date2" : "",
        "date3" : "", "date4" : "",
        "date5" : "", "date6" : "",
        "date7" : "", "activity" : "1"
    }
]
Run Code Online (Sandbox Code Playgroud)

我将此 JSON 传递给我的 Spring 控制器:

$.ajax({
    type: 'post',
    url: 'NewTimesheet',
    dataType : 'json',
    data: JSON.stringify(jsonObj),

    success: function(data) {
        console.log(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

我将请求映射到控制器,如下所示:

@RequestMapping(value="NewTimesheet", headers = { "Content-type=application/json" })
@ResponseBody
public String addNewTimesheet(@RequestBody List<Timesheet> timesheet,
    HttpSession session) {

    logger.info("timesheet list size is" + timesheet.size());
    return "success";
}
Run Code Online (Sandbox Code Playgroud)

Timesheet 班级:

public class Timesheet {
    private String project;
    private String phase;
    private String approver;
    private String customer;
    private String date1;
    private String date2;
    private String date3;
    private String date4;
    private String date5;
    private String date6;
    private String date7;
    private String activity;

    //Getters and setters
}
Run Code Online (Sandbox Code Playgroud)

但是我的请求没有与控制器映射。我的控制台显示如下:

警告 org.springframework.web.servlet.PageNotFound.handleNoSuchRequestHandlingMethod:142 - 找不到与 servlet 请求匹配的处理程序方法:路径 '/NewTimesheet',方法 'POST',参数 map['[{"customer":"16"," project":"19","phase":"47","approver":"5","date1":"","date2":"","date3":"","date4":"" ,"date5":"","date6":"","date7":"","activity":"1"},{"customer":"17","project":"20","phase ":"48","approver":"3","date1":"","date2":"","date3":"","date4":"","date5":"","date6":"","date7":"","activity":"1"}]' -> 数组['']]

如何将我的 JSON 映射到控制器?任何帮助将不胜感激!!!

Jun*_*une 3

您需要将该类注释为Controller,在您的类中添加RequestMapping,并在您的方法中添加您调用的HTTP方法。

@Controller
@RequestMapping("/NewTimesheet")
public class MyClassName {

        @RequestMapping(value={ "", "/" }, method = RequestMethod.POST, headers = { "Content-type=application/json" })
        @ResponseBody
        public String addNewTimesheet(@RequestBody List<Timesheet> timesheet,HttpSession session){
                 logger.info("timesheet list size is"+timesheet.size());
                 return "success";
        }
}
Run Code Online (Sandbox Code Playgroud)