簡體   English   中英

Spring Boot POST 給我一個 404 錯誤,我不知道為什么

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM