Spingboot项目中layui Table的参数传递问题记录
最近在做springboot的项目,前端用到了layui,在使用layui的table进行数据请求时,前端往后台传参时,遇到了点问题,由于自己是新手,所以记录一下
问题描述
当前端的table使用reload方法重载时,设置的各个参数的情况如下,
(1):方法一
tableID.reload({
url: "../../search"
,contentType: 'application/json'
,where: {
"ID": ID,
"status": status,
}
,height: '580'
,method: 'post' //如果无需自定义HTTP类型,可不加该参数
,request: {
pageName: 'curr' //页码的参数名称,默认:page
,limitName: 'nums' //每页数据量的参数名,默认:limit
}
,loading: true
,page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip']//自定义分页布局
,limits:[5,10]
,first: false //不显示首页
,last: false //不显示尾页
}
, text: {
none: '暂无相关数据!',
},
});
后台的search取参数时需要使用下面的方式:
@RequestMapping(value="/search")
public static String search(HttpServletRequest request,
@RequestParam(value = "curr",required = false,defaultValue = "1")String curr,
@RequestParam(value = "nums",required = false,defaultValue = "10")String nums) {
JSONObject jsonObject = getJSONParam(request);
if (jsonObject != null){
System.out.println("contractID:"+jsonObject.getString("contractID"));
System.out.println("status:"+jsonObject.getString("status"));
}
System.out.println("curr:"+curr);
System.out.println("nums:"+nums);
return "success";
}
上面的代码中getJSONParam()的代码如下:
/**
* 当psot键值对形式的数据时,将其转换为json对象
* @param request
* @return
*/
public static JSONObject getJSONParam(HttpServletRequest request){
JSONObject jsonParam = null;
try {
// 获取输入流
BufferedReader streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
// 写入数据到Stringbuilder
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = streamReader.readLine()) != null) {
sb.append(line);
}
jsonParam = JSONObject.parseObject(sb.toString());
// 直接将json信息打印出来
//System.out.println(jsonParam.toJSONString());
} catch (Exception e) {
e.printStackTrace();
}
return jsonParam;
}
(2):方法二
当前端的reload()方法中的contentType参数去除掉之后,:
tableID.reload({
url: "../../search"
,where: {
"ID": ID,
"status": status,
}
,height: '580'
,method: 'post' //如果无需自定义HTTP类型,可不加该参数
,request: {
pageName: 'curr' //页码的参数名称,默认:page
,limitName: 'nums' //每页数据量的参数名,默认:limit
}
,loading: true
,page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档
layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip']//自定义分页布局
,limits:[5,10]
,first: false //不显示首页
,last: false //不显示尾页
}
, text: {
none: '暂无相关数据!',
},
});
后端的接口取参方法就变成了下面的方法:
@RequestMapping(value="/search")
public static String search(
@RequestParam(value = "contractID",required = false)String ID,
@RequestParam(value = "status",required = false)String status,
@RequestParam(value = "curr",required = false,defaultValue = "1")String curr,
@RequestParam(value = "nums",required = false,defaultValue = "10")String nums) {
System.out.println("ID:"+ID);
System.out.println("status:"+status);
System.out.println("curr:"+curr);
System.out.println("nums:"+nums);
return "success";
}
就不需要用到对request里面的请求参数进行解析了。
由于刚刚接触,目前还不太明白其中缘由,所以简单记录一下。