关于后台接收前端传递值的简单总结

1、后台接收类型为String字符串:
JS文件:

function click() {
	······
	var ids = new Array();
	var checked = $('#table').bootstrapTable('getSelections');
	$.each(checked, function(i, item) {
    	ids.push(item.id);
	}
	delete(ids);
}
/*    -------中间省略部分代码------    */
function delete(ids) {
	······
	data: {
  		ids: JSON.stringify(ids);
  	}
}

Java文件:

@PostMapping(value = "/save")
@ResponseBody
public DSResponse save(String ids) {
	······
}

2、后台接收类型为String[]:
JS文件;

function click() {
	······
	var ids = new Array();
	var checked = $('#table').bootstrapTable('getSelections');
	$.each(checked, function(i, item) {
    	ids.push(item.id);
	}
	delete(ids);
}
function delete(ids) {
	$.ajax({
        url: "../../myTest/delete.do",
        type: "get",
        traditional: true, //常规的form提交,需要这个才可以提交数组
        data: {
            ids: ids
        },
        async: false,
        success: function (res) {
            layer.msg(res.message[0]);
            if (res.status == 0) {
                initInfo(); // 初始化表格
            }
        },
        error: function (err) {
        }
    });

Java文件:

@PostMapping(value = "/delete")
@ResponseBody
public DSResponse delete(@RequestParam(name = "ids", required = false) Integer[] ids) {
     ······ 
}

3、后台接收类型为List< String >:
JS文件:

var ids = "";
// 若为Integer类型数据,初始化则为var ids = new Number();
var checked = $('#table').bootstrapTable('getSelections');
	$.each(checked, function(i, item) {
    	// 将数据拼接为data1,data2类型
    	ids += ",";
	}

Java文件:

 @ResponseBody
 @RequestMapping("/getquestionnairerecommend")
 private DSResponse test(@RequestParam List<String> ids) {
 	······
 }

注:
第三种情况中,必须添加@RequestParam注解,不然会报错Failed to instantiate [java.util.List]: Specified class is an interface,原因是数据封装出错。
此外:
后台若需要接收实体数据,后台可接收类型为String userJson,之后可将其转为对象或list,如下:

将json串转成对象,可使用JSON.parseObject方法:
User user = JSON.parseObject(userJson, User.class);
将json串转成list,则可使用JSON.parseArray方法:
List users = JSON.parseArray(usersJson, User.class);

你可能感兴趣的:(Java)