有以下幾點要注意的
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 或者不用。
