Hallo. Dieses Mal möchte ich den Teil der Posting-Funktion der TODO-Anwendung in Java ausführen.
Übrigens habe ich diesmal nicht auf die Validierung eingegangen, aber ich werde die Methode nur für die normale Verarbeitung einführen, da sie in einem späteren Artikel erscheinen wird.
1: Kurze Beschreibung von MVC 2: Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hallo-Welt erstellen 3: Temporäre Daten in MySQL speichern-> Alle abrufen-> Oben anzeigen 4: Implementierung der Buchungsfunktion (hier und jetzt)
Zunächst möchte ich einen Container für Daten vorbereiten, wenn der Benutzer TODO registriert. Dieses Mal möchte ich es in der TodoForm-Klasse implementieren.
Ich denke, dass die Hierarchie zum Erstellen von Klassen dieselbe sein sollte wie bei TodoContoroller.
java/com/example/todo/TodoForm.java
@Data
public class TodoForm {
private long Id;
@NotNull
@Size(min = 1, max =30)
private String title;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private LocalDate deadline;
private boolean status;
}
↑ Es sollte so sein.
Es scheint, dass sich die Spezifikationen gegenüber Spring 2.3 geändert haben. Sie müssen sie daher manuell hinzufügen, um Anmerkungen vom Validierungstyp zu verwenden.
build.gradle
dependencies {
compile group: 'javax.validation', name: 'validation-api', version: '2.0.1.Final'
}
Wenn Sie die oben genannten Abhängigkeiten hinzufügen, können Sie @Size usw. verwenden!
Als nächstes wird der Dienst bearbeitet.
java/com/example/todo/TodoService.java
@Service
@RequiredArgsConstructor
public class TodoService {
private final TodoRepository todoRepository;
//~ Abkürzung ~
public void setTodo(TodoForm formData) {
TodoEntity todo = new TodoEntity();
todo.setTitle(formData.getTitle());
todo.setDeadline(formData.getDeadline());
todoRepository.save(todo);
}
}
Da wir diesmal nur registrieren, wird der Rückgabewert auf void gesetzt.
Legen Sie den TodoForm-Typ formData fest, der als Argument in der neu erstellten TodoEntity übergeben wurde, und speichern Sie ihn. Da set ~~ und get ~~ in jeder Klasse mit @Data verknüpft sind, kann LomBok automatisch Setter und Getter erstellen und verwenden.
Es kann schwierig sein, diesen Bereich zu verstehen, wenn Sie Lombok plötzlich verwenden. Wenn Sie also tiefer verstehen möchten, sollten Sie das Konzept des Getter-Setzers untersuchen.
Speichern Sie es abschließend mit der Repository-Klassenfunktion save und speichern Sie es in der DB!
Nachdem die Service-Klasse implementiert wurde, rufen wir sie vom Controller aus auf!
python
@Controller
@RequiredArgsConstructor
public class TodoController {
// ~Abkürzung~
@PostMapping("/register")
public String register(@ModelAttribute TodoForm formData) {
todoService.setTodo(formData);
return "redirect:/top";
}
}
Was ich hier beachten möchte, ist die Annotation @ModelAttribute!
Diese Anmerkung hat unterschiedliche Verwendungszwecke, je nachdem, ob sie als Argument oder unmittelbar vor einer Methode verwendet wird!
Diesmal werden die von der Vorderseite gesendeten Daten in den TodoForm-Typ umgewandelt, damit sie in der Funktion verwendet werden können.
Auf der Website hier finden Sie leicht verständliche Erklärungen.
Registrieren Sie TODO in der Datenbank, indem Sie formData an das zuvor erstellte setTodo senden.
Wenn die Verarbeitung abgeschlossen ist, wechselt sie zu / top.
Zum Schluss bearbeiten wir die Vorderseite!
python
~Abkürzung
<body>
<!--Formular posten-->
<div class=" w-75 h-auto my-1 mx-auto pt-5">
<p class="pl-5">Erstellen Sie eine neue Aufgabe</p>
<form th:action="@{/register}" th:object="${ToDoForm}" method="POST" class="container d-flex w-auto my-0 mx-auto">
<div class="w-100">
<label class="row">
<span class="col-2 text-center">ToDo Name</span>
<input type="text" name="title" placeholder="Geben Sie ToDo innerhalb von 30 Zeichen ein" class="col-9">
</label>
<label class="row my-0">
<span class="col-2 text-center">Frist</span>
<input type="date" id="date" name="deadline" class="col-9 my-0">
</label>
</div>
<button class="btn btn-primary w-25 col-2 mr-3" type="submit">ToDo hinzufügen</button>
</form>
</div>
</body>
Der registrierte Inhalt wird zu der Funktion des Controllers übersprungen, der in der Aktion th / zugeordnet ist.
Da method = "POST" ist, werden außerdem detaillierte Spezifikationen wie POST- und / oder Registerfunktionen angegeben.
Diese Idee ist sehr wichtig, um die Natur der HTTP-Methoden zu verstehen. Sie können daher auf die Website hier verweisen.
Mit dem Objekt th: wird der Container für die übertragenen Daten angegeben.
Die übermittelten Daten werden in das TodoForm-Objekt eingefügt, das ganz am Anfang dieses Artikels erstellt wurde.
Wenn die Registrierungstaste gedrückt wird
<input type="text" name="title" placeholder="Geben Sie ToDo innerhalb von 30 Zeichen ein" class="col-9">
Der in name = "title" eingegebene Inhalt wird in der Variablen mit demselben Namen (natürlich Titel) der FormData-Klasse gespeichert.
Wie war es? Kurz zusammengefasst ...
Recommended Posts