SpringBoot 请求方法转化无效

SpringBoot 请求方法转化无效

在尝试编写RestFul风格的应用时,后台需要接受PUT,DELETE请求方法。但是前端无法靠常规操作发送这两个方法,所以就需要SpringBoot进行请求方法的转换。
在观看视频时,发现只需要在前端编写代码即可,而后端无需进行操作。

<form method="post" id="delete_form">
	<input th:type="hidden" name="_method" value="delete">
</form>

但实际上SpringBoot并不能将方法转换,猜测是版本问题。在查看了源码之后最终找到了问题。

原因

首先分析SpringBoot应该是自动配置了HiddenHttpMethodFilter,所以去WebMvcAutoConfiguration中找:

@Bean
    @ConditionalOnMissingBean({HiddenHttpMethodFilter.class})
    @ConditionalOnProperty(
        prefix = "spring.mvc.hiddenmethod.filter",
        name = {"enabled"},
        matchIfMissing = false
    )
    public OrderedHiddenHttpMethodFilter hiddenHttpMethodFilter() {
        return new OrderedHiddenHttpMethodFilter();
    }

发现它加了两个条件判断,第一个是如果没有配置HiddenHttpMethodFilter,第二个是根据配置文件中的是否有设置来判断是否注入。
然后我们在找到SpringBoot的默认配置的元数据中spring-configuration-metadata.json发现:

{
  "name": "spring.mvc.hiddenmethod.filter.enabled",
  "type": "java.lang.Boolean",
  "description": "Whether to enable Spring's HiddenHttpMethodFilter.",
  "defaultValue": false
},

默认配置居然是false,说明HiddenHttpMethodFilter默认是关闭的,使用需要在配置文件中进行配置。所以,在配置文件中加一行配置,即可解决问题。

spring.mvc.hiddenmethod.filter.enabled=true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值