SpringMVC에서 여러 객체를 수신하는 4가지 방법
나는 한 표에서 여러 명의 승객의 개인 정보를 한꺼번에 SpringMVC, 앞부분 HTML과 SpringMVC Controller에 제출하려면 어떻게 해야 합니까?
첫 번째 방법: 폼 제출, 필드 그룹으로 수신;
두 번째 방법: 폼 제출, BeanListModel로 접수;
세 번째 방법: Json 대상을 Json 문자열로 정렬하여 제출하고 List로 수신한다.
네 번째 방법: 폼 대상을 Json 문자열로 정렬하여 제출하고List로 수신한다.
네 번째 방법은 사실 세 번째 방법의 업그레이드이다. 바로 표를 Json 대상으로 바꾸고 다시 Json 문자열로 바꾸어 제출하는 것이다.
그러나 네 번째 방법은 다중 선택 컨트롤 폼의 제출을 지원하지 않기 때문에 다섯 번째 강화판 방법이 있을 것이다.
위의 네 가지 방법은 모두 같은 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 ,
}
첫 번째 방법: 폼 제출, 필드 그룹으로 수신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 코드는 다음과 같습니다.
@RequestMapping(value = "/submitUserList_1", method ={RequestMethod.POST})
@ResponseBody
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;
}
두 번째 방법: 양식 제출, 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 방법:
@RequestMapping(value = "/submitUserList_2", method ={RequestMethod.POST})
@ResponseBody
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;
}
세 번째 방법: 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 코드:
@RequestMapping(value = "/submitUserList_3", method ={RequestMethod.POST})
@ResponseBody
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;
}
네 번째 방법: 양식 객체를 Json 문자열로 정렬하여 List로 수신HTML 코드:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<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[this.name] = [jsonData1[this.name], this.value];
}
} else {
jsonData1[this.name] = this.value;
}
});
// [{"id": "12", "name": "aaa", "pwd":"pwd1"},{"id": "14", "name": "bb", "pwd":"pwd2"}]
var vCount = 0;
// json
for(var item in jsonData1){
var tmp = $.isArray(jsonData1[item]) ? jsonData1[item].length : 1;
vCount = (tmp > vCount) ? tmp : vCount;
}
if(vCount > 1) {
var jsonData2 = new Array();
for(var i = 0; i < vCount; i++){
var jsonObj = {};
for(var item in jsonData1) {
jsonObj[item] = jsonData1[item][i];
}
jsonData2.push(jsonObj);
}
return JSON.stringify(jsonData2);
}else{
return "[" + JSON.stringify(jsonData1) + "]";
}
};
})(jQuery);
function submitUserList_4() {alert("ok");
var jsonStr = $("#form1").serializeJson();
//console.log("jsonStr:\r
" + jsonStr);
//alert(jsonStr);
$.ajax({
url: "/user/submitUserList_4",
type: "POST",
contentType : 'application/json;charset=utf-8', //
dataType:"json",
data: jsonStr,
success: function(data){
alert(data);
},
error: function(res){
alert(res.responseText);
}
});
}
</script>
</head>
<body>
<h1>submitUserList_4</h1>
<form id="form1">
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="button" value="submit" onclick="submitUserList_4();">
</form>
</body>
</html>
Java 코드:
@RequestMapping(value = "/submitUserList_4", method ={RequestMethod.POST})
@ResponseBody
public String submitUserList_4(@RequestBody List<User> users)
throws Exception{
String result = "";
if(users == null || users.size() <= 0){ return "No any ID. "; }
result = this.showUserList(users);
return result;
}
요약:1, 2가지 방법은 모두 하나의 공통된 BUG가 있다. 만약에 세 개의 기록을 제출할 때 앞의 두 개의 기록의 일부 필드가 값을 채우지 않으면 SpringMVC에서 정확하게 받지 못한다.그리고 두 가지 방법마다 HMTL에서name 속성에 [아래 표시]를 추가해야 합니다. 만약에 아래 표시가 경계가 있다면(예를 들어 첫 번째 컨트롤은 0이고, 두 번째 그룹은 2), 스프링 MVC에는 사실 0에서 두세 개의 대상이 있고, 기본 아래 표시가 1인 그 대상은 모두null값입니다.
세 번째, 네 번째 방법이 가장 실용적이다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ssm 프레임워크 업로드 이미지 로컬 및 데이터베이스에 저장 예시본고는 ssm 프레임워크 업로드 이미지를 로컬과 데이터베이스에 저장하는 예시를 소개하고 주로 Spring+SpringMVC+MyBatis 프레임워크를 사용하여 ssm 프레임워크 업로드 이미지의 실례를 실현했다. 구체...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.