基于controller使用map接收参数的注意事项
程序员文章站
2022-06-21 23:32:41
目录controller使用map接收参数注意事项controller使用map接收参数并用postman测试controller使用map接收参数注意事项关于前端使用map去接收参数的问题@post...
controller使用map接收参数注意事项
关于前端使用map去接收参数的问题
@postmapping("test01") @responsebody // 如果这里不加@requestbody,那么springmvc默认创建的是bindawaremodelmap public object test01( map datamap) { // 对象,并且都参数都不会封装进去 system.out.println(datamap); datamap = null; return new bindingawaremodelmap(); // 如果返回bindingawaremodelmap对象,就会抛出异常 }
正确封装姿势
@controller @requestmapping("map") public class mapcontroller { @postmapping("test01") @responsebody // 如果加了@requestbody,那么创建的是linkedhashmap public object test01(@requestbody map datamap) { // 并且参数都封装了进去(url路径参数和json参数都会封装进去) system.out.println(datamap); datamap.put("msg", "ojbk"); return datamap; } }
结论:如果使用map接收前端参数,那么一定要加@requestbody才行
#mybatis使用map封装参数, @select("select * from t_product where pid = #{pid} or pname = #{pname}") list<product> getbymap(map map); #mybatisplus中有写好的方法 list<t> selectbymap(@param("cm") map<string, object> columnmap);
正确封装姿势2
@data public class page { private map datamap = new hashmap(); // 这里可以不用初始化,加了@requestbody,默认创建linkdedhashmap } @controller @requestmapping("map") public class mapcontroller { @postmapping("test01") @responsebody public object test01(@requestbody page page) { // 一定要加@requestbody,否则封装不进去 return page; } }
前端需要使用json传参格式:
{ "datamap":{ "name":"zzhua" } }
controller使用map接收参数并用postman测试
controller层
@postmapping("/xksq/getgjclbycondition") public resultinfo getgjclbycondition(@requestbody map<string,object> params,httpservletrequest request){ map<string,object> map = new hashmap<>(); try { integer ipageindex = (integer) params.get("ipageindex"); integer ipagesize = (integer) params.get("ipagesize"); pagehelper.startpage(ipageindex!=null?ipageindex:1,ipagesize!=null?ipagesize:10); string username = jwtutil.getusername(request.getheader("token")); rfgcgl user = rfgcglmapper.selectone(new querywrapper<rfgcgl>().eq("yhmc", username)); if(null==user){ return resultinfo.fail(903,"用户不存在"); } params.put("qynbbh",user.getqynbbh()); list<map<string, object>> gjclbycondition = clxxqysqmapper.getgjclbycondition(params); pageinfo<map<string, object>> pageinfo = new pageinfo<>(gjclbycondition); map.put("total",pageinfo.gettotal()); map.put("datas",pageinfo); return resultinfo.ok(map); }catch (exception e){ e.printstacktrace(); return resultinfo.fail(901, "列表条件查询失败"); } }
使用postman测试
controller使用map接收参数时必须使用 @requestbody接收参数,否则后台会出现接收不到的情况
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。