SpringBoot2的PUT请求接收不了参数

本文主要描述了在SpringBoot2项目中遇到PUT请求无法接收参数的问题。在集成activiti工作流框架后,尽管请求发送了所有参数,但在服务器端接收时参数为null。经过分析和对比代码,确定问题是由于PUT请求导致的。为解决此问题,添加了一个特定的过滤器。同时提出疑问,在未集成Spring Security前PUT请求正常,集成后为何出现此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题背景

最近在项目中集成 activiti 工作流的框架,在保存模型的时候有这样一个方法,请求方式为put, 请求为Rest风格,modelId 倒是能获取到,但是后面的4个参数一直不能接收到。

@RequestMapping(value = "/model/{modelId}/save", method = RequestMethod.PUT)
@ResponseStatus(value = HttpStatus.OK)
public void saveModel(@PathVariable String modelId
            , String name, String description
            , String json_xml, String svg_xml) {
            ******
}

结果分析发现,浏览器发送请求的时候,参数全部发送了出去,所以把问题定位到为什么接收为null,通过代码对比,最后把问题定位到PUT请求上,经过百度,果然是PUT接收不到参数,具体的问题详解可以看以下博客:
SpringBoot2的PUT请求接收不了参数

解决方法

添加以下过滤器:

    @Bean
    public FilterRegistrationBean<HttpPutFormContentFilter> testFilterRegistration2() {
        FilterRegistrationBean<HttpPutFormContentFilter> registration = new FilterRegistrationBean<HttpPutFormContentFilter>();
        registration.setFilter(new HttpPutFormContentFilter());//添加过滤器
        registration.addUrlPatterns("/*");//设置过滤路径,/*所有路径
        registration.setName("HttpPutFormContentFilter");//设置优先级
        registration.setOrder(2);//设置优先级
        return registration;
    }

疑问

在没有集成 Spring Secrity之前,是完全没有这个问题的,参数都能获取,不能到是那里导致了PUT不能使用?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值