java - 无法将 json 字符串绑定(bind)到 Spring MVC Controller 中的对象?

标签 java jquery ajax spring spring-mvc

我正在尝试创建一个 Spring MVC 应用程序并在单击提交按钮时发送 Ajax 调用。

下面是 Controller 方法:

@ResponseBody
    @RequestMapping(value = "/addTask" , method=RequestMethod.POST)
    public String addTask(@ModelAttribute(value="task") Task task, BindingResult result, Model model){
        String returnText = null;
        System.out.println(task.getDescription()); // printing null
        return "success" ;
    }

但是我将 Task 对象中的所有属性都设置为 null

但是我可以在 Controller 中接收 json 作为字符串并通过 Gson api 转换为对象。

@ResponseBody
    @RequestMapping(value = "/addTask" , method=RequestMethod.POST)
    public String addTask(@RequestBody String task){
        String returnText = null;

        Gson gson = new Gson();
        Task rr = gson.fromJson(task, Task.class);
        taskList.add(rr);
        return "success" ;
    }

下面是ajax代码:

 function doAjaxPost() {

        var id = $('#id').val();
        var desc = $('#description').val();
        var dueDate = $('#dueDate').val();
        var obj = { "id" : id, "description" : desc, "dueDate": dueDate};
        console.log(obj)

        $.ajax({
            type : "POST",
            contentType : "application/json",
            url : "/spring/addTask",
            data : JSON.stringify(obj),
            dataType : 'json',
            timeout : 100000,

            success: function(response){
            $('#description').val('');
            $('#dueDate').val('');
            $('#id').val('');
            },
            error: function(e){
            alert('Error: ' + e);
            console.log(e);
            }
            });
            }

我已经在 pom.xml 中添加了以下 2 个依赖项。

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.6.3</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.6.3</version>
        </dependency>

最佳答案

在发出 POST 请求时,从 Ajax 调用中删除行 contentType : "application/json" 。它将设置 model 和 100% work 中的值。如果这对您有帮助,请告诉我。

关于java - 无法将 json 字符串绑定(bind)到 Spring MVC Controller 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38026804/

相关文章:

java - ViewPager2#onpageselect StackOverflowError

javascript - ajax追加列表组项目不触发点击事件

javascript - firebug 报告对 undefined reference ... jquery.cache [id] [name]

javascript - 双异步AJAX函数

javascript - 如何在步骤向导中继续对多个表单进行 ajax 调用

java - 在下拉列表中显示从数据库中选择的数据

java - 当作为参数传递给 spring 消息标记时,格式化值会丢失其格式

java - 有人知道我可以在官方网站之外找到 Vaadin 框架的附加组件、主题和小部件的网站、项目或存储库吗?

javascript - 使用 Ajax 在不刷新页面的情况下查询 SQL

Javascript带来外部文件的特定div