Hallo.
Lassen Sie uns die Ausnahmebehandlung bis zum letzten Mal fortsetzen!
1: [Grundlegendes zu den Super-Grundlagen] Eine kurze Beschreibung von MVC 2: [Vorlage vorbereiten] Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hallo-Welt erstellen 3: [Verbindung / Einstellungen / Datenanzeige mit MySQL] Temporäre Daten in MySQL speichern-> Alle abrufen-> Oben anzeigen 4: [POST-Funktion] Implementierung der Posting-Funktion 5: [PATCH-Funktion] TODO-Anzeige umschalten 6: [Einfach zu verwendendes JpaRepository] Implementierung der Suchfunktion [7: [Häufig mit Thymeleaf-Vorlagenfragmenten] Header erstellen] (https://qiita.com/nomad_kartman/items/8c33eca2880c43a06e40) [8: [PUT-Funktion] Implementierung der Bearbeitungsfunktion] (https://qiita.com/nomad_kartman/items/66578f3f91a422f9207d) [9: [Tweak] TODO-Anzeige in chronologischer Reihenfolge sortieren + Fälligkeitsdatum auf heutiges Datum setzen] (https://qiita.com/nomad_kartman/items/5ee2b13a701cf3eaeb15) 10: [Ausnahmebehandlung mit Spring] Eine kurze Zusammenfassung der Ausnahmebehandlung [11: [Ausnahmebehandlung mit Feder] Ausnahmebehandlung beim Zugriff auf TODO mit nicht vorhandener ID] (https://qiita.com/nomad_kartman/items/a486838153a563767169) [12: [Ausnahmebehandlung im Frühjahr] Verarbeitung, wenn eine Anforderung mit einer nicht verwendeten HttpMethod / Verarbeitung eingeht, wenn ein Fehler auf dem Server auftritt] (https://qiita.com/nomad_kartman/items/8a1a06b42138b495e29c) 13: [Ausnahmebehandlung mit Feder] TODO-Formularvalidierung 1: Zeichenlimit-Aktualisierungsgradle zur Verwendung von @Validated
Spring dieser Anwendung verwendet Version2.3.0.RELEASE
.
Wenn Sie sich 2.3 Release Note ansehen, sehen Sie die Anmerkungen, die dieses Mal verwendet werden, z. B. @Validated und @Size. Es kann nicht standardmäßig verwendet werden.
Fügen Sie also gemäß dem Inhalt des obigen Links die validierungsbezogenen zum Abhängigkeitsteil von "build.gradle" hinzu.
build.gradle
dependencies {
//Abkürzung
implementation 'org.springframework.boot:spring-boot-starter-validation'
}
Durch Hinzufügen dieser Abhängigkeit können validierungsbezogene Anmerkungen verwendet werden.
Der Gradle wird aktualisiert, da er nicht nur durch Hinzufügen wiedergegeben wird. Bitte beachten Sie das Bild unten.
Nachdem die Aktualisierung erfolgreich abgeschlossen wurde, besteht der nächste Schritt darin, den Controller zu bearbeiten und die Formulardatenklasse zu überprüfen, die zum Buchen von TODO verwendet wird.
Lassen Sie uns zunächst den Validierungsinhalt dieses TODO überprüfen.
Dies sind die drei Punkte. Dieses Mal werde ich den Fall validieren, in dem es sich um 1 bis 30 Zeichen handelt.
java/com/example/todo/TodoForm.java
package com.example.todo;
import com.sun.istack.NotNull;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.Size;
import java.time.LocalDate;
@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 sieht aus wie das.
@ NotNull
erlaubt keine Null für Titel (Beitragsinhalt)
.
@ size
kann das minimale und maximale Zeichen sein.
python
@PostMapping("/register")
public String register(@Validated @ModelAttribute TodoForm formData, BindingResult error, RedirectAttributes attributes) {
if(error.hasErrors()) {
attributes.addFlashAttribute("errorMessages", error);
return "redirect:/top";
}
todoService.setTodo(formData);
return "redirect:/top";
}
@ Validated, BindingResult, RedirectAttributes hinzugefügt.
@ Validated
ist eine Anmerkung, die den Validierungsinhalt des veröffentlichten Inhalts TodoForm
überprüft.
Jetzt können Sie nach Null suchen und die Anzahl der Zeichen bestimmen.
Wenn die Validierung abgefangen wird, wird der Fehlerinhalt in der "BindingResult-Klassenvariablen error" gespeichert.
RedirectAttributes
wird verwendet, um nach vorne zurückzukehren.
Es ist eine bedingte Verzweigung, wenn der Fehlerinhalt im Teil von "if (error.hasErrors ()) ..." fehlerhaft gespeichert wird (dh, er steckt in der Validierung fest).
Wir übergeben "error" als "variable errorMessages" an die Front.
Fügen Sie Folgendes direkt unter der Überschrift hinzu.
resources/templates/top.html
<!--Anzeigebereich für Fehlermeldungen-->
<th:block th:if="${errorMessages}">
<th:block th:each="error : ${errorMessages.getAllErrors()}">
<div class=" w-75 h-auto my-1 mx-auto pt-5">
<p class="text-center text-danger" th:text="${error.defaultMessage}"></p>
</div>
</th:block>
</th:block>
Ich habe früher geschrieben, dass ich "errorMessages" übergebe, wenn ein Fehler vorliegt, aber gestern in Thymeleaf habe ich eine if-Anweisung hinzugefügt, um festzustellen, ob Fehlermeldungen vorliegen.
Wenn Fehler auftreten, werden sie in jeder Anweisung einzeln angezeigt.
Es gibt "th: text =" $ {error.defaultMessage} ", aber der Inhalt der Fehlermeldung kann mit" .defaultMessage "abgerufen werden.
Wenn Sie versuchen, mehr als 30 Zeichen einzugeben, wird die folgende Meldung angezeigt.
Ich werde es diesmal nicht anfassen, aber Sie können diese Nachricht nach Belieben ändern!
Im nächsten Artikel werde ich auf die verbleibenden zwei Validierungen eingehen!
Recommended Posts