基本类型接收可以用数组,也可以用List,如下
// 基本类型数组方法一
@RequestMapping("list3")
@ResponseBody
public void TestListener4(@RequestParam(value = "ids[]") String[] ids){
System.out.println(ids.length);
for (int i = 0; i < ids.length; i++) {
System.out.println(ids[i]);
}
}
// 基本类型数组方法二
@RequestMapping("list4")
@ResponseBody
public void TestListener4(@RequestBody List<String> ids){
for (int i = 0; i < ids.size(); i++) {
System.out.println(ids.get(i));
}
}
引用类型只能用list或者封装实体的方法进行接收,数组接收不成功
// list接收
@RequestMapping("list1")
@ResponseBody
public void TestListener(@RequestBody List<Book> books){
for(Book book:books){
System.out.println(book.getId()+"-----"+book.getName());
}
}
// 封装实体类进行接收 BookList里有个成员变量List<Book> books
@RequestMapping("list2")
@ResponseBody
public void TestListener2(@RequestBody BookList books){
for(Book book:books.getBooks()){
System.out.println(book.getId()+"-----"+book.getName());
}
}
封装实体类还是比较实用的,在工作中会经常用到,面向对象的思维
前端ajax需要注意一点:
$.ajax({
// headers必须添加,否则会报错
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
type: 'POST',
dataType: "json",
data: JSON.stringify(data),
url: base+'test/list4.do',
success: function(){
alert('success');
}
});
偶然发现,接收List还有这神操作,前端传送一个以逗号分隔的字符串,后台直接字符串接收即可
变量 columns = "列名1,列名2,列名3,列名4,列名5"
将此变量传到后台在Controller层用List<String> columns接收时,发现columns的大小为5,
值为:[列名1,列名2,列名3,列名4,列名5]
自动将字符串转化为数组了;