java - 在 Spring MVC 应用程序的 Controller 中没有收到 ajax 请求?

标签 java jquery ajax spring spring-mvc

我正在尝试使用 Spring MVC 创建任务阅读器。 我在 Task 中有 3 个字段:id、Description 和 dueDate。

现在点击“添加按钮”,我试图向 Spring Controller 发送 Ajax 调用。但是我没有在服务器端收到请求。

Ajax请求代码如下:

function doAjaxPost() {
    var id = $('#id').val();
    var desc = $('#description').val();
    var dueDate = $('#dueDate').val();
    var json = { "id" : id, "description" : desc, "dueDate": dueDate};
    $.ajax({
    type: "POST",
    contentType : "application/json",
    url: "/addTask",
    data : JSON.stringify(json),
    dataType : 'json',

    success: function(response){
    $('#info').html(response);
    },
    error: function(e){
    alert('Error: ' + e);
    console.log(e);
    }
    });
    }

Controller 代码:

@RequestMapping(value = "/addTask", method = RequestMethod.POST)
    public @ResponseBody String addTask(@RequestBody Task task) {
        String returnText;
        System.out.println(task.getDescription() + " " + task.getDueDate());
        System.out.println(task);
        // taskList.add(task);
        returnText = "User has been added to the list. Total number of task are " + taskList.size();

        return returnText;
    }

我在 Chrome 控制台中收到以下错误消息。

服务器拒绝了此请求,因为请求实体的格式不受所请求方法所请求资源的支持。”

谁能指出我在哪里犯了错误?

更新:

我可以用另一种方式做到这一点:

@RequestMapping(value = "/addTask" , method=RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody String addTask(@RequestBody String task){
        Gson gson = new Gson();
        Task t = gson.fromJson(task, Task.class);
        taskList.add(t);
        ObjectMapper mapper = new ObjectMapper();
        String jsontastList = gson.toJson(taskList);
        return jsontastList;
    }

但我仍然想知道不需要将 json 显式转换为 Java 对象的方法。

最佳答案

设置

consumes="application/json"
@RequestMapping
将方法更改为:

@RequestMapping(value = "/addTask", method = RequestMethod.POST,consumes="application/json")
 public @ResponseBody String addTask(@RequestBody Task task) {...}

关于java - 在 Spring MVC 应用程序的 Controller 中没有收到 ajax 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935754/

相关文章:

java - struts 中的无效 token

java - 简单的哈希函数技术

javascript - 运行 querySelectorAll() 时 NodeList 始终为空

javascript - jQuery AJAX 函数未定义

javascript - IE8 XmlHttpRequest调试

javascript - 禁用提交按钮的最安全方法?

java - 小程序。为什么paint方法需要图形作为参数

java - 如何使用 SWTBot 导航 View 菜单?

jquery - 如何避免一个对象上发生多个事件?

javascript - Ion slider - onFinish 在页面加载时被触发(不是由于用户对 slider 的操作)