概述
在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取。这里主要讲这个注解 。
一、基本使用,获取提交的参数
后端代码:
@RequestMapping("/selXqtSpxx")
@ResponseBody
public List<XqtSpxx> selXqtSpxx(
@RequestParam(required = false) String spxx01,
@RequestParam(required = false) String spxx02,
@RequestParam(required = false) String gys01,
@RequestParam(required = false) String gys02,
@RequestParam(required = false, defaultValue = "1") int startIndex,
@RequestParam(required = false, defaultValue = "10") int pageSize,
HttpServletRequest request) throws UnsupportedEncodingException {
List<XqtSpxx> xqtSpxxList = new ArrayList<XqtSpxx>();
request.setCharacterEncoding("ISO-8859-1");
xqtSpxxList = xqtSpxxServiceImpl.queryXqtSpxx(spxx01, spxx02,
gys01, gys02, new PageBounds(startIndex / pageSize + 1,
pageSize));
return xqtSpxxList;
}
前端代码:
$(function() {
var $wrapper = $('#div-table-container');
table = $('#xqtList').DataTable(
{
//"ajax" : '${ctx}/user/queryUser',
"ajax" : function(data, callback, settings) {//ajax配置为function,手动调用异步查询
//手动控制遮罩
//$wrapper.spinModal();
//封装请求参数
var param = getQueryCondition(data);
$.ajax({
type : "GET",
url : '${ctx}/xqt/xqtmain/selXqtSpxx',
cache : false, //禁用缓存
data : param, //传入已封装的参数
dataType : "json",
success : function(result) {
var returnData = {};
returnData.draw = data.draw;
returnData.recordsTotal = result.totalCount;
returnData.recordsFiltered = result.totalCount;//后台不实现过滤功能,每次查询均视作全部结果
returnData.data = result.items;
callback(returnData);
},
error : function(
XMLHttpRequest,
textStatus, errorThrown) {
alert("查询失败");
//$wrapper.spinModal(false);
}
});
},
"processing" : true,
"serverSide" : true,
"info" : true,
"lengthChange" : false,
"searching" : false,
"ordering" : false,
"columnDefs" : [{"render":function(data, type, row) {
return "<a title='编辑' href='javascript:;' οnclick="xqtspxx_edit('编辑','${ctx}/xqt/xqtmain/edit?spxx01="+ row.spxx01 +"','','510')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont"></i>编辑</a> "
+"<a title="删除" href="javascript:;" οnclick="xqtspxx_del(this,'"+ row.spxx01 +"')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont"></i>删除</a>";
},
"targets" : 4
}],
columns : [ {
"data" : "spxx01"
}, {
"data" : "spxx02"
}, {
"data" : "gys01"
}, {
"data" : "gys02"
}]
});
});
function getQueryCondition(data) {
var param = {};
//组装排序参数
if (data.order && data.order.length && data.order[0]) {
switch (data.order[0].column) {
case 1:
param.orderColumn = "spxx01";
break;
case 2:
param.orderColumn = "spxx01";
break;
case 3:
param.orderColumn = "spxx01";
break;
case 4:
param.orderColumn = "spxx01";
break;
default:
param.orderColumn = "spxx01";
break;
}
param.orderDir = data.order[0].dir;
}
//组装查询参数
if ($("#spxx01").val() != "") {
param.spxx01 = $("#spxx01").val();
}
if ($("#spxx02").val() != "") {
param.spxx02 = $("#spxx02").val();
}
if ($("#gys01").val() != "") {
param.gys01 = $("#gys01").val();
}
if ($("#gys02").val() != "") {
param.gys02 = $("#gys02").val();
}
//组装分页参数
param.startIndex = data.start;
param.pageSize = data.length;
return param;
}
前端界面:
可以看到spring会自动根据参数名字封装进入,我们可以直接拿这个参数名来用。
二、各种异常情况处理
1、可以对传入参数指定参数名
@RequestParam String inputStr
// 下面的对传入参数指定为aa,如果前端不传aa参数名,会报错
@RequestParam(value="aa") String inputStr
错误信息:
HTTP Status 400 - Required String parameter 'aa' is not present
2、可以通过required=false或者true来要求@RequestParam配置的前端参数是否一定要传
// required=false表示不传的话,会给参数赋值为null,required=true就是必须要有
@RequestMapping("testRequestParam")
public String filesUpload(@RequestParam(value="aa", required=true) String inputStr, HttpServletRequest request)
3、如果用@RequestMapping注解的参数是int基本类型,但是required=false,这时如果不传参数值会报错,因为不传值,会赋值为null给int,会报错
@RequestMapping("testRequestParam")
public String filesUpload(@RequestParam(value="aa", required=true) String inputStr,
@RequestParam(value="inputInt", required=false) int inputInt
,HttpServletRequest request) {
// ......省略
return "index";
}
解决方法:
“Consider declaring it as object wrapper for the corresponding primitive type.”建议使用包装类型代替基本类型,如使用“Integer”代替“int”
最后
以上就是冷静招牌为你收集整理的SpringMVC注解@RequestParam的全部内容,希望文章能够帮你解决SpringMVC注解@RequestParam所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复