一个表单同时提交多条记录
程序员文章站
2023-09-28 15:32:03
问题背景: 我要在一个表单里同时一次性提交多名乘客的个人信息到SpringMVC,前端HTML和SpringMVC Controller里该如何处理? 第1种方法:表单提交,以字段数组接收; 第2种方法:表单提交,以BeanListModel接收; 第3种方法:将Json对象序列化成Json字符串提 ......
问题背景:
我要在一个表单里同时一次性提交多名乘客的个人信息到springmvc,前端html和springmvc controller里该如何处理?
- 第1种方法:表单提交,以字段数组接收;
- 第2种方法:表单提交,以beanlistmodel接收;
- 第3种方法:将json对象序列化成json字符串提交,以list接收;
- 第4种方法:将表单对象序列化成json字符串提交,以list接收;
第4种方法其实是第3种方法的升级,就是将表单转成json对象,再转成json字符串提交;
然而,第4种方法还不支持含有多选控件表单的提交,故应该还有第5种加强版的方法。
以上4种方法都共用同一个user实体类,代码如下:
-
public class user {
-
-
private integer id;
-
private string name;
-
private string pwd;
-
-
@override
-
public string tostring() {
-
return "user{" +
-
"id=" + id +
-
", name='" + name + '\'' +
-
", pwd='" + pwd + '\'' +
-
'}';
-
}
-
// .......后面还有getter、setter方法,省略了
-
}
第1种方法:表单提交,以字段数组接收
html代码如下:
-
<form action="/user/submituserlist_1" method="post">
-
id:<input type="text" name="id"><br/>
-
username:<input type="text" name="name"><br/>
-
password:<input type="text" name="pwd"><br/><br/>
-
-
id:<input type="text" name="id"><br/>
-
username:<input type="text" name="name"><br/>
-
password:<input type="text" name="pwd"><br/><br/>
-
<input type="submit" value="submit">
-
</form>
java代码如下:
-
-
-
public string submituserlist_1(httpservletresponse response,integer[] id, string[] name, string[] pwd)
-
throws exception{
-
string result = "";
-
if(id == null || id.length <= 0){ return "no any id.中文"; }
-
list<user> userlist = new arraylist<user>();
-
for (int i = 0; i < id.length; i++ ) {
-
user user = new user();
-
user.setid(id[i]);
-
user.setname(name[i]);
-
user.setpwd(pwd[i]);
-
userlist.add(user);
-
}
-
result = this.showuserlist(userlist);
-
return result;
-
}
第2种方法:表单提交,以beanlistmodel接收
html代码如下:
-
<form action="/user/submituserlist_2" method="post">
-
id:<input type="text" name="users[0].id"><br/>
-
username:<input type="text" name="users[0].name"><br/>
-
password:<input type="text" name="users[0].pwd"><br/><br/>
-
-
id:<input type="text" name="users[2].id"><br/>
-
username:<input type="text" name="users[2].name"><br/>
-
password:<input type="text" name="users[2].pwd"><br/><br/>
-
<input type="submit" value="submit">
-
</form>
java代码:
除了刚才公用的user类,还要封装一个user的容器类usermodel:
-
public class usermodel {
-
private list<user> users;
-
-
public list<user> getusers() {
-
return users;
-
}
-
-
public void setusers(list<user> users) {
-
this.users = users;
-
}
-
-
public usermodel(list<user> users) {
-
super();
-
this.users = users;
-
}
-
-
public usermodel() {
-
super();
-
}
-
-
}
springmvc controller方法:
-
-
-
public string submituserlist_2(usermodel users)
-
throws exception{
-
string result = "";
-
list<user> userlist = users.getusers();
-
if(userlist == null || userlist.size() <= 0){ return "no any id.中文"; }
-
result = this.showuserlist(userlist);
-
return result;
-
}
第3种方法:将json对象序列化成json字符串提交,以list接收
html代码:
-
<head>
-
<title>submituserlist_3</title>
-
<meta http-equiv="content-type" content="text/html; charset=utf-8">
-
<script language="javascript" src="/js/jquery.min.js" ></script>
-
<script language="javascript" src="/js/jquery.json.min.js" ></script>
-
<script type="text/javascript" language="javascript">
-
function submituserlist_3() {alert("ok");
-
var customerarray = new array();
-
customerarray.push({id: "1", name: "李四", pwd: "123"});
-
customerarray.push({id: "2", name: "张三", pwd: "332"});
-
$.ajax({
-
url: "/user/submituserlist_3",
-
type: "post",
-
contenttype : 'application/json;charset=utf-8', //设置请求头信息
-
datatype:"json",
-
//data: json.stringify(customerarray), //将json对象序列化成json字符串,json.stringify()原生态方法
-
data: $.tojson(customerarray), //将json对象序列化成json字符串,tojson()需要引用jquery.json.min.js
-
success: function(data){
-
alert(data);
-
},
-
error: function(res){
-
alert(res.responsetext);
-
}
-
});
-
}
-
</script>
-
</head>
-
-
<body>
-
<h1>submituserlist_3</h1>
-
<input id="submit" type="button" value="submit" onclick="submituserlist_3();">
-
</body>
java代码:
-
-
-
public string submituserlist_3(@requestbody list<user> users)
-
throws exception{
-
string result = "";
-
if(users == null || users.size() <= 0){ return "no any id.中文"; }
-
result = this.showuserlist(users);
-
return result;
-
}
第4种方法:将表单对象序列化成json字符串提交,以list接收
html代码:
-
-
-
<html>
-
<head>
-
<title>submituserlist_4</title>
-
<meta http-equiv="content-type" content="text/html; charset=utf-8">
-
<script language="javascript" src="/js/jquery.min.js" ></script>
-
<script type="text/javascript" language="javascript">
-
//将表单序列化成json格式的数据(但不适用于含有控件的表单,例如复选框、多选的select)
-
(function($){
-
$.fn.serializejson = function(){
-
var jsondata1 = {};
-
var serializearray = this.serializearray();
-
// 先转换成{"id": ["12","14"], "name": ["aaa","bbb"], "pwd":["pwd1","pwd2"]}这种形式
-
$(serializearray).each(function () {
-
if (jsondata1[this.name]) {
-
if ($.isarray(jsondata1[this.name])) {
-
jsondata1[this.name].push(this.value);
-
} else {
-
jsondata1[赞 (0)打赏 微信扫一扫
相关文章:
-
-
Django Model模块 [TOC] model 模型 是映射数据库的表模型。通过操作model类及其实例对象,对数据库的表和记录进行相关操作。... [阅读全文]
-
MyEclipse下SpringBoot+JSP整合过程及踩坑
刚开始学习SpringBoot,记录一下旧项目整合到SpringBoot时遇到的问题(后续踩的坑也会持续加入) PS:通过查看他人博客自己东拼西凑出... [阅读全文] -
spring cloud 初步搭建1-1(eureka配置)
本次版本基于spring cloud (Finchley.RELEASE) spring boot ( 2.0.4.RELEASE ) 踩... [阅读全文] -
一、TCP: TCP是Transmission Control Protocol的简称,中文名传输控制协议。是一种面向连接的、可靠的、基于字节流的传... [阅读全文]
-
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
-
上一篇: Spring:Ioc和DI
发表评论