gpt4 book ai didi

java - Spring Boot 如何使用 HiddenHttpMethodFilter

转载 作者:行者123 更新时间:2023-11-30 10:53:19 25 4
gpt4 key购买 nike

众所周知,表单只支持GETPOST方法,像这样:

<form method="[GET|POST]" action="/user/create">

如果我们的 Controller 有一个 PUT 映射,我们会得到一个 405 错误,这意味着我们只能使用 GETPOST 而不能 放置

public class UserController {

@Autowired
private UserService userService;

@RequestMapping(value = "/create", method = RequestMethod.PUT)
public ModelAndView createUser(@ModelAttribute("user") Users user, BindingResult bindingResult){
ModelAndView mv = new ModelAndView("list");
// do something...
return mv;
}
}

在spring MVC中,我们可以解决这个问题:

首先,像这样创建一个隐藏字段:

<form method="[GET|POST]" action="/user/create">
<input type="hidden" name="_method" value="put"/>

二、添加过滤器

<filter>  
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<servlet-name>springmvc</servlet-name>
</filter-mapping>

这样,我们就可以使用PUT方法了。

但是我如何在 Spring Boot 中做到这一点?我知道 Spring Boot 有一个名为 WebMvcAutoConfiguration 的类,它拥有一个方法 hiddenHttpMethodFilter,但我该如何使用该类?

最佳答案

将以下内容添加到您的application.properties:

spring.mvc.hiddenmethod.filter.enabled=true

这将自动配置 HiddenHttpMethodFilter

接下来,在表单上使用 th:method="DELETE" 让 Thymeleaf 自动添加隐藏字段。

(Spring Boot < 2.2 始终注册过滤器,对于 Spring Boot 2.2 或更高版本,您需要设置该属性)

关于java - Spring Boot 如何使用 HiddenHttpMethodFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34048617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com