Erstellen wir eine TODO-App in Java 13 TODO-Formularvalidierung 1: Zeichenbegrenzung · Gradle-Update zur Verwendung von @Validated

Hallo.

Lassen Sie uns die Ausnahmebehandlung bis zum letzten Mal fortsetzen!

Linkerfassung zur Erstellung von TODO-Anwendungen

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

Fügen Sie Gradle eine neue Abhängigkeit hinzu

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.

Zu build.grale hinzugefügt

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.

Aktualisieren Sie build.gradle

Der Gradle wird aktualisiert, da er nicht nur durch Hinzufügen wiedergegeben wird. Bitte beachten Sie das Bild unten. Screen Shot 0002-11-07 at 20.16.03.png

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.

Führen Sie eine Validierung durch

Bestätigung des geposteten Inhalts

Lassen Sie uns zunächst den Validierungsinhalt dieses TODO überprüfen.

  1. Der gepostete Inhalt besteht aus 1 bis 30 Zeichen
  2. Leerzeichen sind nicht zulässig
  3. Das Posten des gleichen Inhalts ist nicht gestattet

Dies sind die drei Punkte. Dieses Mal werde ich den Fall validieren, in dem es sich um 1 bis 30 Zeichen handelt.

Überprüfen der Formulardatenklasse

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.

Controller-Klasse bearbeiten

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.

Zeigen Sie die Fehlerdetails auf der Vorderseite an

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.

Screen Shot 0002-11-07 at 20.44.33.png

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

Erstellen wir eine TODO-App in Java 13 TODO-Formularvalidierung 1: Zeichenbegrenzung · Gradle-Update zur Verwendung von @Validated
Lassen Sie uns eine TODO-App in Java 4 erstellen. Implementierung der Buchungsfunktion
Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
Lassen Sie uns eine TODO-App in Java 8 erstellen. Implementierung von Bearbeitungsfunktionen
Erstellen wir eine TODO-Anwendung mit Java 1 Kurze Erläuterung von MVC
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
Erstellen wir eine TODO-App in Java 9 Erstellen einer TODO-Anzeige Sortieren nach Datum und Uhrzeit + Setzen Sie das Fälligkeitsdatum auf das aktuelle Datum
Lassen Sie uns eine TODO-Anwendung mit Java 2 erstellen. Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hello-Welt erstellen
Erstellen wir eine TODO-Anwendung mit Java 11-Ausnahmebehandlung, wenn Sie mit einer nicht vorhandenen ID auf TODO zugreifen
So erstellen Sie ein neues Gradle + Java + Jar-Projekt in Intellij 2016.03
Erstellen wir eine TODO-App mit Java 3 Speichern Sie temporäre Daten in MySQL-> Get all-> Display on top
Erstellen Sie eine TODO-App in Java 7 Create Header
Versuchen Sie, ein Bulletin Board in Java zu erstellen
Erstellen wir eine Taschenrechner-App mit Java ~ Erstellen Sie einen Anzeigebereich im Fenster
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
So erstellen Sie einen Daten-URI (base64) in Java
Erstellen Sie ein Java-Servlet und eine JSP-WAR-Datei für die Bereitstellung auf Apache Tomcat 9 mit Gradle
So erstellen Sie ein Platzhalterteil zur Verwendung in der IN-Klausel
Erstellen Sie eine Methode, um den Steuersatz in Java zurückzugeben
So simulieren Sie das Hochladen von Post-Object-Formularen in OSS in Java
Java lernen: Verwenden Sie Timer, um so etwas wie einen Bomben-Timer zu erstellen
[Enum_help] Verwenden Sie enum_help, um ein Auswahlfeld zu erstellen, das auf Japanisch angezeigt wird!
Vorbereiten der Erstellung einer Rails-Anwendung
Verwenden wir Twilio in Java! (Einführung)
Wie verwende ich Klassen in Java?
So erstellen Sie eine Zip-Datei beim Gruppieren von Datenbanksuchergebnissen in Java
[Java] So verwenden Sie Teilzeichenfolgen, um einen Teil einer Zeichenfolge auszuschneiden
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Umfang des Versuchs, eine Java-Webanwendung unter Windows Server 2016 zu erstellen
Mehrsprachige Unterstützung für Java Verwendung des Gebietsschemas
Ein Memo zum Erstellen eines einfachen Formulars, das nur HTML und CSS in Rails 6 verwendet
Erstellen wir eine vielseitige Dateispeicher (?) - Operationsbibliothek, indem wir die Dateispeicherung / -erfassung mit Java abstrahieren
[Azure] Ich habe versucht, eine Java-App für die Erstellung von kostenlosen Web-Apps zu erstellen. [Anfänger]