有以下几点要注意的
springboot中要设置这个过滤器,如果是在springmvc中,就在web.xml中设置,道理是一样的
@Configuration public class WebConfig extends WebMvcConfigurerAdapter { // 就是这个 @Bean public HttpPutFormContentFilter httpPutFormContentFilter() { return new HttpPutFormContentFilter(); } }
在Controller中要在接收的对象前面设置@RequestBody
@RequestMapping(value = "/test", method = { RequestMethod.PUT }) public JSONObject gmm(@RequestBody UserVo userVo) throws Exception { JSONObject obj = new JSONObject(); System.out.println("---------------"); return obj; }
layui中的请求方法
var url = "/test"; var data = JSON.stringify($('.layui-form').serializeObject());//这个方法很关键JSON.stringify(),没有这个方法后台转换不了 ajaxsubmit(url,data); function ajaxsubmit(url,data){ $.ajax({ headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, url:url, data:data, type:"PUT", dataType:"json", success:function(data){ if(typeof(data) != 'undefined'){ layer.msg(data.message); setTimeout(function(){reload()},1*1000); }else{ layer.msg("返回错误,请联系管理员!"); } }, error:function(data){ layer.msg("请求错误,请联系管理员!"); } }); }
附一个form转json对象的办法,这个方法上面有用到,是自定义的
$.prototype.serializeObject = function () { var a,o,h,i,e; a = this.serializeArray(); o={}; h=o.hasOwnProperty; for(i=0;i<a.length;i++){ e=a[i]; if(!h.call(o,e.name)){ o[e.name]=e.value; } } return o; }
参考链接
https://blog.csdn.net/kshon/article/details/82682768
https://blog.csdn.net/pingweicheng/article/details/81019850
https://blog.csdn.net/qq_37144354/article/details/79922048
https://blog.csdn.net/weixin_33973609/article/details/93323390
摘录第4篇参考文章关于传参的一些总结:
1:JSON提交方式: Content-Type:application/json 后端:对象接收:除了:get请求,不需要增加@ReqeustBody注解,其它的都需要。 参数接收:使用:@RequestParam 或者不用。 使用这种请求: 其它后端同事开发的时候:客户端(SOAP)模拟请求时,有了@ReqeustBody参数接收不到,于是去掉,前端开发时,更新代码又加上。因为公司网不能下载插件,后换成了:form表单提交。 2:form表单提交方式:Content-Type:application/x-www-form-urlencoded form表单数据格式:为:param1=111¶m2=222 这种开式。 后端:对象接收:除了:所有请求:都不加@ReqeustBody注解 参数接收:可以使用:@RequestParam 或者不用。