不支持 Spring MVC 请求方法“POST”-> HTTP 405
Posted
技术标签:
【中文标题】不支持 Spring MVC 请求方法“POST”-> HTTP 405【英文标题】:Spring MVC Request method 'POST' not supported -> HTTP 405 【发布时间】:2020-07-24 06:44:24 【问题描述】:卡住了大约 4 个小时,想知道 Spring MVC/thymeleaf 应用程序中的错误在哪里。 我的本地目标是在主页提交登录/通过表单后呈现 admin.html。
控制器:
@Controller
public class HomeController
@GetMapping("/")
public String getHome(Model m)
m.addAttribute( "user",new User());
return "/home";
@PostMapping("/")
public String getSubmit(@ModelAttribute User user)
return "/admin";
home.html:
<form action="#" th:action="@/admin" th:object="$user" method="post">
<p class="txt">Name: <input type="text" th:field="*name"/></p>
<p class="txt">Password: <input type="text" th:field="*password"/></p>
<p><input class="button" type="submit" value="Submit" />
<input class="button" type="reset" value="Reset" /></p>
</form >
用户类别:
@Data
@Entity
public class User
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
private String password;
private boolean isAdmin;
private String address;
所以我搜索了很多想法,从 pom.xml 中删除了 spring 安全性, 尝试将 @RequestedMapping 与 RequestMethod.PUT 一起使用,- 没办法,它不起作用。
【问题讨论】:
th:action="@/admin" - 重定向到 api -> /admin 并且您在控制器中没有该 api? 【参考方案1】:您的表单引用th:action="@/admin"
作为目标。您的控制器不会映射/admin
,而只会映射根/
。
您必须将目标更改为/
。
如果你想渲染一个模板/admin
,那么你的回报是正确的。如果你想重定向到/admin
,那么一个新的控制器可能会处理这个问题,所以你必须改写redirect:/admin
。
【讨论】:
更改目标不起作用。我写了 AdminController,但每次都添加新的 Controller 看起来很糟糕。还是谢谢!【参考方案2】:你的控制器应该是这样的:
@Controller
public class HomeController
@GetMapping("/")
public String getHome(Model m)
m.addAttribute("user", new User());
return "/home";
@PostMapping("/admin")
public String getSubmit(User user)
return "/admin";
home.html 应该是这样的:
<form action="@/admin" th:object="$user" method="post">
<p class="txt">Name: <input type="text" th:field="*name"/></p>
<p class="txt">Password: <input type="text" th:field="*password"/></p>
<p><input class="button" type="submit" value="Submit" />
<input class="button" type="reset" value="Reset"/></p>
</form >
【讨论】:
以上是关于不支持 Spring MVC 请求方法“POST”-> HTTP 405的主要内容,如果未能解决你的问题,请参考以下文章
HTTP 状态 405 - 不支持请求方法“POST”(Spring MVC)
不支持 Spring MVC 请求方法“POST”-> HTTP 405
已解决 [org.springframework.web.HttpRequestMethodNotSupportedException: 不支持请求方法'POST'] Spring MVC
405 在客户端请求命中 Spring MVC 中的拦截器之前不支持请求方法“GET”