我是靠谱客的博主 冷静招牌,这篇文章主要介绍SpringMVC注解@RequestParam,现在分享给大家,希望可以做个参考。

在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解@RequestParam直接获取。这里主要讲这个注解 。

一、基本使用,获取提交的参数 

后端代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@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; }
前端代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
$(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、可以对传入参数指定参数名
复制代码
1
2
3
@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配置的前端参数是否一定要传 
复制代码
1
2
3
// 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,会报错
复制代码
1
2
3
4
5
6
7
8
@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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部