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;