我是靠谱客的博主 冷静招牌,最近开发中收集的这篇文章主要介绍SpringMVC注解@RequestParam,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部