[英]Spring Boot POST gives me a 404 error and I don't know why
我目前正在使用 Spring 啟動項目,當我嘗試發布新的 object 時,出現 404 錯誤。 我不知道為什么,因為當我在此鏈接上嘗試使用 httpie 進行 POST 時,它可以工作。 我正在使用 Spring 引導、PostgresSQL (PGAdmin) 和 Thymeleaf。
這是我的@Controller
class:
@RequestMapping("/Mitarbeiter")
public String alleMitarbeiterAnzeigen(Model m)
{
m.addAttribute("AlleMitarbeiter", mitarbeiterRepository.findAll());
return "showMitarbeiter";
}
@RequestMapping(value="/neuerMitarbeiter")
public String neuerMitarbeiter(Model m)
{
m.addAttribute("mitarbeiter", new Mitarbeiter());
return "neuerMitarbeiter";
}
@PostMapping(value="/neuenMitarbeiterErstellen")
public String neuenMitarbeiterErstellen(@ModelAttribute Mitarbeiter mitarbeiter, Model m)
{
mitarbeiterRepository.save(mitarbeiter);
m.addAttribute("AlleMitarbeiter", mitarbeiterRepository.findAll());
return "showMitarbeiter";
}
這是 HTML 的形式:
<!DOCTYPE html>
<html lang="en">
<html xmlns:th="https://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Neuen Mitarbeiter erstellen</title>
</head>
<body>
<form action="#" th:action="@{/neuenMitarbeiterErstellen}" th:object="${mitarbeiter}" method="post">
Name: <input type="text" th:field="*{name}" required/><br>
Aufgabe: <input type="text" th:field="*{aufgabe}" required/><br>
Geschlecht: <input type="text" th:field="*{geschlecht}" required/<br>
<br>
<input type="submit" value="Neuen Mitarbeiter erstellen"/>
</form>
</body>
</html>
這是存儲庫:
@Repository
public interface MitarbeiterRepository extends CrudRepository<Mitarbeiter, Long> {
}
PS C:\Users\Test> http POST localhost:8080/Projektmanagement/neuenMitarbeiterErstellen
HTTP/1.1 200
Connection: keep-alive
Content-Language: de-DE
Content-Type: text/html;charset=UTF-8
Date: Sat, 30 Jul 2022 16:50:43 GMT
Keep-Alive: timeout=60
Transfer-Encoding: chunked
PS C:\Users\Test> http GET localhost:8080/Projektmanagement/neuerMitarbeiter
HTTP/1.1 200
Connection: keep-alive
Content-Language: de-DE
Content-Type: text/html;charset=UTF-8
Date: Sat, 30 Jul 2022 16:52:51 GMT
Keep-Alive: timeout=60
Transfer-Encoding: chunked
那是在 post 的事件處理程序上帶有 POST 的 httpie 請求和在表單的 get 上的 get 請求
<!DOCTYPE html>
<html lang="en">
<html>
<head>
<meta charset="UTF-8">
<title>Neuen Mitarbeiter erstellen</title>
</head>
<body>
<form action="/neuenMitarbeiterErstellen" method="post">
Name: <input type="text" required id="name" name="name" value=""/><br>
Aufgabe: <input type="text" required id="aufgabe" name="aufgabe" value=""/><br>
Geschlecht: <input type="text" required id="geschlecht" name="geschlecht" value=""/><br>
<br>
<input type="submit" value="Neuen Mitarbeiter erstellen"/>
</form>
</body>
</html>
在瀏覽器中查看時的站點代碼
Okay the Answer is that your th:action in the html has to be the function that you want to use and not the route means the slash at th:action="@{/neuenMitarbeiterErstellen}" must go. thx paul 的軟件 postman 幫助了我:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.