springboot+layui用js发送put请求,并接收对象

有以下几点要注意的

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
&param2=222 这种开式。 后端:对象接收:除了:所有请求:都不加@ReqeustBody注解 参数接收:可以使用:@RequestParam 或者不用。

 

posted @ 2020-03-28 20:55  朗先生  阅读(1449)  评论(0编辑  收藏  举报