Spring-MVC Thymeleaf из-за не отправки

#spring #forms #spring-mvc #thymeleaf

#весна #формы #весна-mvc #тимьяновый лист

Вопрос:

Я новичок в spring и пробовал кодировать прототип.

Я пробовал сделать форму. Всякий раз, когда я нажимаю кнопку отправки, ничего не происходит. Я использую Spring Boot 2.4.3 с Oracle OpenJDK 15.0.2. Я пробовал Firefox и Chrome. js-консоль пуста.

Это моя модель ( Patient.java ):

 public class Patient implements Serializable {
    private long id;
    private String firstname;
    private String lastname;

    // Geters and seters
}
 

Мой контроллер ( PatientController.java ):

 @Controller
public class PatientController {
    @GetMapping("/patient")
    public String patientForm(Model model) {
        model.addAttribute("patient", new Patient());
        return "addPatient";
    }

    @PostMapping("/patient")
    public String patientSubmit(@ModelAttribute("patient") Patient patient, Model model) {
        model.addAttribute("patient", patient);
        return "addedPatient";
    }
}
 

Мой addPatient.html :

 <!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>HTL-Testet Prototype</title>
</head>
<body>
    <h1>Add a patient</h1>
    <from action="#" th:action="@{/patient}" th:object="${patient}" method="post">
        <p>Id: <input type="number" th:field="*{id}"/></p>
        <p>Firstname: <input type="text" th:field="*{firstname}"/></p>
        <p>Lastname : <input type="text" th:field="*{lastname}"/></p>
        <button type="submit">Register</button>
    </from>
</body>
</html>
 

Мой addedPatient.html :

 <!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>HTL-Testet Prototype</title>
</head>
<body>
    <h1>Add a patient</h1>
    <p th:text="'Added '   '['   ${patient.id}   ']'   ${patient.firstname}   ' '   ${patient.lastname}"></p>
    <a href="/patient">Add another patient</a>
</body>
</html>
 

Ответ №1:

from Тег на addPatient.hmtl странице неправильный, если вы измените его на form тег, как показано ниже, проблема будет решена:

 <!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>HTL-Testet Prototype</title>
</head>
<body>
    <h1>Add a patient</h1>
    <form action="#" th:action="@{/patient}" th:object="${patient}" method="post">
        <p>Id: <input type="number" th:field="*{id}"/></p>
        <p>Firstname: <input type="text" th:field="*{firstname}"/></p>
        <p>Lastname : <input type="text" th:field="*{lastname}"/></p>
        <button type="submit">Register</button>
    </form>
</body>
</html>