我正在使用Spring boot,Jpa和Thymeleaf构建一个非常简单的crud应用程序,但我仍然坚持使用" Request方法' GET'不支持"问题。每当我想访问/ add页面时,我都会收到此错误,我可以通过该页面添加新学生。与此错误相关的代码段如下:
Thymeleaf形式:
<h1>Form</h1>
<form action="#" th:action="@{/add}" th:object="${addStudent}"
method="post">
<p>Full name: <input type="text" th:field="*{fname}" /></p>
<p>Major: <input type="text" th:field="*{major}" /></p>
<p><input type="submit" value="Submit" /> <input type="reset" value="Reset" /></p>
</form>
Controller addNewStudentMethod
@PostMapping("/add")
public String addNewStudent( @ModelAttribute StudentEntity studentEntity, Model model) {
model.addAttribute("addStudent",studentRepository.save(studentEntity) );
return "/allstudents";
}
我得到的错误:
There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'GET' not supported
谢谢,
答案 0 :(得分:2)
在您的控制器中,您只有一个已映射到POST
请求&#34; / add&#34;的方法。您必须将GET
请求映射到其他方法,或将@PostMapping("/add")
更改为@RequestMapping("/add")
。
请注意:
@PostMapping
仅用于映射POST
请求。
@GetMapping
仅用于映射GET
请求。
@RequestMapping
映射所有请求类型
答案 1 :(得分:1)
将您的Controller方法的@PostMapping("/any-url")
更改为@GetMapping("/any-url")
或@RequestMapping("/any-url")
简单来说,将上面控制器的方法更改为
@RequestMapping("/add")
public String addNewStudent( @ModelAttribute StudentEntity studentEntity, Model model) {
model.addAttribute("addStudent",studentRepository.save(studentEntity) );
return "/allstudents";
}
答案 2 :(得分:1)
您对如何设置它有一些问题。你可能想要的是:
@GetMapping("/add")
public String addNewStudent(Model model) {
model.addAttribute("studentEntity", new StudentEntity()); //create a new bean so that your form can bind the input fields to it
return "add"; //let's say add.html this is the name of your form
}
@PostMapping("/add")
public String addNewStudent( @ModelAttribute StudentEntity studentEntity, Model model) {
//call any service methods to do any processing here
studentRepository.save(studentEntity);
return "redirect:/allstudents"; //this would be your confirmation page
}
您的add.html
表单会包含以下内容:
<form th:object="${studentEntity}" th:action="@{/add}" method="post" action="allstudents.html">
<!-- input fields here --->
</form>
请注意,th:object
是您在@GetMapping
方法中添加到模型中的内容。