Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring表单对象绑定,正常提交时工作。但是如何转换为json并使用ajax呢_Java_Ajax_Json_Spring - Fatal编程技术网

Java Spring表单对象绑定,正常提交时工作。但是如何转换为json并使用ajax呢

Java Spring表单对象绑定,正常提交时工作。但是如何转换为json并使用ajax呢,java,ajax,json,spring,Java,Ajax,Json,Spring,我有一份表格,提交给管制员后效果良好,管制员签名: @RequestMapping(value = "/Save", method = RequestMethod.POST) public ModelAndView save(@ModelAttribute MyDTO myDTO) {} 我有另一种控制器方法来处理带有此签名的ajax请求: @RequestMapping(value = "/Preview", method = RequestMethod.POST) public Model

我有一份表格,提交给管制员后效果良好,管制员签名:

@RequestMapping(value = "/Save", method = RequestMethod.POST)
public ModelAndView save(@ModelAttribute MyDTO myDTO) {}
我有另一种控制器方法来处理带有此签名的ajax请求:

@RequestMapping(value = "/Preview", method = RequestMethod.POST)
public ModelAndView preview(@RequestBody MyDTO myDTO) {}
但是,提交序列化表单会返回此错误:
org.codehaus.jackson.map.exc.UnrecognizedPropertyException:未识别的字段“myList[0]”(类myPackage.dto.MyDTO),未标记为可忽略

javascript/jquery是:

var json = jq("#dtoForm").serializeObject();
json = JSON.stringify(json);
jq.ajax({
        cache:false,
    type: 'POST',
    url: "${Preview}",
    data:json,
    contentType: "application/json",
    success:  function(data) {          
        previewDialog.html(data);
        previewDialog.dialog('open');
        }
});
我错过了什么?我很困惑,因为表单在未转换json时提交得很好(dto映射正确)。dto包括一个列表

如果我删除
json=json.stringify(json),则编辑正如我所建议的,我得到了一个稍微不同的错误(dto中的一个字段称为“title”):


如果其他人也有同样的问题,我从这里得到了代码: 包括LIB,并将我的代码更改为:

var json = jq("#dtoForm").toObject(); //the new lib I dl'd from link
json = JSON.stringify(json);
...
//and then to do the same ajax call
但是,这个问题并没有完全解决,因为spring mvc表单为每个复选框创建了一个隐藏的表单元素,然后我手动删除了该元素:

delete json._MyBoolean;
顺便说一句,这一切看起来相当混乱——spring/jackson不应该在没有这些额外内容的情况下,将pojo转换为html表单和双向json吗

(对库的原始堆栈引用为)

delete json._MyBoolean;