使用spring的requestBody实现List绑定
最近有很多一对多关系的表单需要保存,比如一个人有好几本书,他会在一个表单提交所有的数据,我的后台参数需要绑定一个List。
下面是人和书的model:
public class User {
/** 自增型主键 */
private Integer id;
/** 姓名 */
private String name;
private String groupId;
private List<Book> books;
}
public class Book {
/** 书籍 */
private Integer id;
/** 借书人(借书人的) */
private Integer borrower;
/** 预订人 */
private Integer booker;
/** 书名 */
private String bookName;
/** 书本页数 */
private Integer pageCount;
/** 价格 */
private Double price;
/** 作者 */
private String author;
/** 出版社 */
private String press;
/** 书籍类别(对应类别表的) */
private Integer catgory;
我的后台参数就是User user,其实用form提交也是可以的,只要把book的每一行设为books[i].bookName这样也能提交,但是公司用的是EasyUI的 dataGrid,所以name就不能由我控制。于是我查了很多资料,有了下一种方法,使用 ajax和@RequestBody的方法提交。
在前台,我们用ajax
$.ajax({
url : '/ztree/save',
type : "post",
data : JSON.stringify({
"name" : "a",
"books" : [{"bookName":"a","price":12.3},{"bookName":"b"}]
}),
contentType : "application/json",
beforeSend : function() {
return $("#form").valid();
}
});
我们把dataGrid中的数据变为一个数组,然后将整个表单的数据变为一个json String,contentType设置为 "application/json",需要校验表单就在ajax的 beforeSend中调用。
后台我们使用@RequestBody来接受json类型的数据
@RequestMapping("save")
@ResponseBody
public String save(@RequestBody User user, HttpServletRequest request) {
System.out.println(user.toString());
return "ztree";
}
这样就可以直接填充user参数。
本文介绍了一种在Spring框架中使用@RequestBody注解来处理一对多关系表单提交的方法,通过将前端提交的JSON字符串转换为Java对象列表,简化了后端的数据处理流程。
1万+

被折叠的 条评论
为什么被折叠?



