无法获取表单来提交用户数据并将其发布到mydatabase

时间:2019-08-05 03:41:00

标签: java spring-mvc

我不断收到白标错误,它只是说

  

不支持请求方法“ 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发布数据。我希望能够提交用户输入以发布到数据库。

3 个答案:

答案 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();
}