【发布时间】:2013-07-10 13:20:29
【问题描述】:
我使用 Spring MVC 并且在控制器中我有功能:
@ResponseBody
@RequestMapping(value = "/json/negotiation/Supervisor.json", produces = "application/json", method = RequestMethod.POST)
public ExtResponse changeSupervisorStep(@RequestBody BatchModel<Supervisor> supervisors) {...}
我从客户端发送请求(使用 ExtJs):
Ext.Ajax.request({
url : '/jur_rest/json/negotiation/Supervisor.json',
jsonData : { supervisors : {toInsert : [], toDelete : [], toUpdate : [] }}
});
一切都很好,我得到了三个数组的对象。但是我想再从客户端发送一次模型,如果我写这样的东西:
@ResponseBody
@RequestMapping(value = "/json/negotiation/Supervisor.json", produces = "application/json", method = RequestMethod.POST)
public ExtResponse changeSupervisorStep(@RequestBody BatchModel<Supervisor> supervisors, @RequestBody Supervisor model) { ... }
Ext.Ajax.request({
url : '/jur_rest/json/negotiation/Supervisor.json',
jsonData : { supervisors : {toInsert : [], toDelete : [], toUpdate : [] }, model : {}}
});
我收到错误 - 400 错误请求。怎么了?谢谢。
编辑:
learning Spring's @RequestBody and @RequestParam 控制器函数中只能有一个 @RequestBody 参数。如何在一个请求中传递两个模型?将它们合并为一个类?
【问题讨论】:
-
您的两个 json 字符串之间的区别在于
model: {}部分。 Spring 可能不知道如何映射它。 -
糟糕,我的错误 - stackoverflow.com/questions/3337350/… @RequestBody 参数只能有一个,但我怎么能传递两个模型?!
-
创建一个包含
Supervisor和BatchModel的 DTO。然后将其与@RequestBody一起使用。
标签: java spring spring-mvc extjs