- 方法一:利用ajax, 并设置contentType: ‘application/json’ (必须要设置,@RequestBody需要根据这个来确定需要使用jsonHttpMessageCon) ,后台用@RequestBody接受前台传递的json字符串
--jsp页面
function submitFrom1 () {
var list = [];
for (var i = 0 ; i < 3 ; i++) {
var params = {};
params['pkg_id'] = "123_" + i;
params['pkg_name'] = "1234_" + i;
params['pkg_desc'] = "1235_" + i;
list.push(params);
}
$("#jsonParams").val(JSON.stringify(list));
$.ajax ({
type:'post',
time:20000,
contentType: 'application/json',
dateType:'json',
url:$("#contextPath").val()+'/bigPackage/test.do',
data:JSON.stringify(list),
success:function(data){
alert(data);
},
error:function(e){
}
});
}
--controller层:
@RequestMapping("test")
@ResponseBody
public String test (@RequestBody BigPackageVO [] vo) {
for (BigPackageVO v : vo) {
String pkg_id = v.getPkg_id();
String pkg_name = v.getPkg_name();
String pkg_desc = v.getPkg_desc() ;
log.info("pkg_id:" + pkg_id + "pkg_name:" + pkg_name + "pkg_desc:" + pkg_desc);
}
return "0" ;
}
- 方法2:
--jsp页面
<form action="<%=basePath%>bigPackage/test1.do" method="post" id="testForm">
<input type="text" name="list[0].username" value="user1"><br/>
<input type="text" name="list[0].password" value="pwd1"><br/>
<input type="text" name="list[1].username" value="user2"><br/>
<input type="text" name="list[1].password" value="pwd2"><br/>
<input type="button" value="submit" onclick="formSubmit();"/>
</form>
--controller层:
@RequestMapping("test1")
public void test1 (UserModel u) {
List<User> list = u.getList();
for (User user : list) {
log.info(user.getUsername());
}
}
--User类
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
--UserModel类
public class UserModel {
private List<User> list;
public List<User> getList() {
return list;
}
public void setList(List<User> list) {
this.list = list;
}
}
–注意
两者必须相同