我不断收到白标错误,它只是说
不支持请求方法“ POST”
这是控制器。
| staff_id | username | date | role | global_scoring |
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
| 100 | Adam | 2017 | Senior Artist | 1.99 |
| 161 | John | 2019 | Checker | 3.05 |
| 221 | Anna | 2019 | Checker | 3.84 |
这是HTML表单。
@GetMapping(value="/get")
public List<Contacts> getAll() {
return contactsRepo.findAll();
}
@PostMapping(value = "/contactMe.html")
public List<Contacts> persist(@RequestBody final Contacts contacts{
contactsRepo.save(contacts);
return contactsRepo.findAll();
}
/**
@PutMapping(value = "/put")
public List<Contacts> contactSubmit(@ModelAttribute Contacts
contacts) {
contactsRepo.save(contacts);
return contactsRepo.findAll();
}
**/
我能够在后期映射中使用application / json通过postman发布数据。我希望能够提交用户输入以发布到数据库。
答案 0 :(得分:1)
@PostMapping(value = "/contactMe",produces="text/html")
@ResponseBody
public List<Contacts> persist(@ModelAttribute final Contacts contacts{
contactsRepo.save(contacts);
return contactsRepo.findAll();
}
使用HTML表单
<form th:action="@{contactMe}" method="POST" th:modelAttribute="contacts">
答案 1 :(得分:0)
您的表单应具有一个名为th:action =“ / contactMe.html”的属性,当前这是您在控制器中创建的帖子可用的唯一路径,您的th:object是您发送给控制器的内容。我不认为代码可以编译,因为在contacts参数之后缺少“)”。这里有一个基本示例https://spring.io/guides/gs/handling-form-submission/
答案 2 :(得分:0)
检查您是否返回@ResponseBody或@ResponseStatus
使用POST请求进行呼叫时,总是会出现以下错误:
HTTP状态405-不支持请求方法“ POST”
过一会儿,我发现该方法实际上是被调用的,但是因为没有@ResponseBody并且没有@ ResponseStatus,Spring MVC也会引发错误。
要解决此问题,只需添加一个@ResponseBody
@RequestMapping(value="/user", method = RequestMethod.POST)
public @ResponseBody List<Contacts> persist(@RequestBody final Contacts contacts{
contactsRepo.save(contacts);
return contactsRepo.findAll();
}
或方法中的@ResponseStatus
。
@RequestMapping(value="/contactMe", method = RequestMethod.POST)
@ResponseStatus(value=HttpStatus.OK)
public List<Contacts> persist(@RequestBody final Contacts contacts{
contactsRepo.save(contacts);
return contactsRepo.findAll();
}