Für diejenigen, die mit der Arbeit an Spring Quickstart Guide fertig sind, diejenigen, die angefangen haben, Spring Boot zu lernen, und diejenigen, die eine Überprüfung durchführen möchten
Wir werden mitteilen, was wir gelernt haben, indem wir tatsächlich am offiziellen Leitfaden Validating Form Input gearbeitet haben.
Das ausgefüllte Formular finden Sie hier.
Es gibt ein Formular zur Eingabe von Name und Alter.
Wenn die Senden-Taste mit einem ungültigen Wert gedrückt wird, wird eine Fehlermeldung angezeigt und
Wenn ein gültiger Wert eingegeben wird, implementieren wir ihn, damit Sie zu einem anderen Bildschirm wechseln können.
Die Entwicklungsumgebung und die Überprüfung sind wie folgt.
Entwicklungsumgebung
Betriebssystem: macOS Mojave Version 10.14.6
Texteditor: Visual Studio Code (im Folgenden VSCode)
Java: 11.0.2
Klicken Sie hier, um eine Übersicht über die Kurzanleitung zu erhalten. Klicken Sie hier, um eine Übersicht über das Erstellen eines RESTful-Webdiensts zu erhalten. Klicken Sie hier, um eine Übersicht über den Verbrauch eines RESTful-Webdienstes zu erhalten. Klicken Sie hier, um eine Übersicht über den Zugriff auf Daten mit JPA zu erhalten. Klicken Sie hier, um eine Übersicht über die Übermittlung des Bearbeitungsformulars zu erhalten
Gehen Sie zunächst zu spring initializr.
validating-form-input
.Klicken Sie dann auf die Schaltfläche "GENERATE", um die Zip-Datei herunterzuladen.
Extrahieren Sie die heruntergeladene Zip-Datei und Sie können loslegen.
Öffnen Sie den vorherigen Ordner mit VS Code. Wir empfehlen, das Java Extension Pack für Erweiterungen zu installieren. Es wird gesagt, dass Sie es installieren sollten.
Erstellen Sie eine PersonForm.java-Datei in src / main / java / com / example / validatingforminput /.
Fügen Sie den Code hinzu, der sich auf die Formel bezieht.
PersonForm.java
package com.example.validatingforminput;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
public class PersonForm {
@NotNull
@Size(min=2, max=30)
private String name;
@NotNull
@Min(18)
private Integer age;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String toString() {
return "Person(Name: " + this.name + ", Age: " + this.age + ")";
}
}
Wir werden uns eingehender mit dem hinzugefügten Code befassen.
@ NotNull
und @ Size
PersonForm.java
@NotNull
@Size(min=2, max=30)
private String name;
Zum Zeitpunkt der Deklaration werden der Variablen für den Namen des String-Typs zwei Validierungsanmerkungen hinzugefügt.
@ NotNull
erlaubt nicht ** null **. Bitte beachten Sie, dass Nullen nicht zulässig sind, Leerzeichen und Leerzeichen jedoch zulässig sind.
@ Size
überprüft, ob ** min oder mehr ** und ** max oder weniger ** in ()
angegeben sind.
Diesmal ist es "@Size (min = 2, max = 30)", sodass ein Fehler auftritt, wenn es nicht 2 oder mehr und 30 oder weniger ist.
②@Min
PersonForm.java
@NotNull
@Min(18)
private Integer age;
Beim Deklarieren einer Altersvariablen vom Typ Integer werden zwei Validierungsanmerkungen hinzugefügt. (Eines ist "@ NotNull" oben erwähnt)
@ Min
wird überprüft, ob es kleiner als der in ()
beschriebene Wert ist.
Diesmal ist es "@ Min (18)", sodass weniger als 18 zu einem Fehler führen.
PersonForm.java
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String toString() {
return "Person(Name: " + this.name + ", Age: " + this.age + ")";
}
Es definiert eine Getter / Setter-Methode zum Abrufen und Ändern der Werte der Variablen Name und Alter. Außerdem wird eine toString-Methode zum Anzeigen von Name und Alter als Zeichenfolgen definiert. (Ich glaube nicht, dass ich es dieses Mal benutze, aber ist es zum Debuggen?)
Obwohl es im offiziellen Handbuch nicht erwähnt wurde, wenn Spring Boot 2.3 oder höher,
Import javax.validation.constraints.〇〇
von PersonForm.java
führt zu einem Fehler.
(Spring Boot2.3 Relealse Notes)
Fügen Sie Abhängigkeiten Folgendes hinzu.
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
Erstellen Sie eine WebController.java-Datei in src / main / java / com / example / validatingforminput /
.
Fügen Sie den Code hinzu, der sich auf die Formel bezieht.
WebController.java
package com.example.validatingforminput;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Controller
public class WebController implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/results").setViewName("results");
}
@GetMapping("/")
public String showForm(PersonForm personForm) {
return "form";
}
@PostMapping("/")
public String checkPersonInfo(@Valid PersonForm personForm, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "form";
}
return "redirect:/results";
}
}
Wir werden uns eingehender mit dem hinzugefügten Code befassen.
WebController.java
@Controller
public class WebController implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/results").setViewName("results");
}
//Folgendes wird weggelassen
}
Implementiert die WebMvcConfigurer-Schnittstelle und überschreibt die addViewControllers-Methode.
Es wird interpretiert, dass die URL "http: // localhost: 8080 / results" so eingestellt ist, dass sie auf die Vorlage ** results.html ** verweist. Es scheint, dass die URL und die Vorlage zugeordnet sind. Die Implementierung von results.html erfolgt später.
WebController.java
@GetMapping("/")
public String showForm(PersonForm personForm) {
return "form";
}
@ GetMapping
ist eine Anmerkung zum Aufrufen der showForm-Methode, wenn eine GET-Anforderung unter http: // localhost: 8080 /
vorliegt.
Ich erhalte eine PersonForm als Argument. Sie können PersonForm mit dem Formularattribut "form.html" verknüpfen, dem Rückgabewert der Methode.
Die Implementierung von form.html erfolgt später.
WebController.java
@PostMapping("/")
public String checkPersonInfo(@Valid PersonForm personForm, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "form";
}
return "redirect:/results";
}
@ PostMapping
ist eine Anmerkung zum Aufrufen der checkPersonInfo-Methode, wenn eine POST-Anforderung unter http: // localhost: 8080 /
vorliegt.
Das erste Argument, "@Valid PersonForm personForm", validiert die Eingabedaten.
Das zweite Argument, "BindingResult bindingResult", ist eine Anmerkung zum Speichern der Eingabedaten und des Validierungsergebnisses (ob ein Fehler vorliegt).
Die if-Anweisung mit "bindingResult.hasErrors ()" sucht nach Fehlern. Wenn ein Fehler auftritt, zeichnen Sie form.html mit der Fehlermeldung und dem eingegebenen Wert neu.
Wenn keine Fehler vorliegen, werden Sie zu "http: // localhost: 8080 / results" weitergeleitet.
Erstellen Sie eine form.html-Datei in src / main / resources / templates /
.
Fügen Sie den Code hinzu, der sich auf die Formel bezieht.
form.html
<html xmlns:th="http://www.thymeleaf.org">
<body>
<form action="#" th:action="@{/}" th:object="${personForm}" method="post">
<table>
<tr>
<td>Name:</td>
<td><input type="text" th:field="*{name}" /></td>
<td th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</td>
</tr>
<tr>
<td>Age:</td>
<td><input type="text" th:field="*{age}" /></td>
<td th:if="${#fields.hasErrors('age')}" th:errors="*{age}">Age Error</td>
</tr>
<tr>
<td><button type="submit">Submit</button></td>
</tr>
</table>
</form>
</body>
</html>
Es ist ein Formularbildschirm zur Eingabe von Name und Alter.
Wir werden uns eingehender mit der Beschreibung von Thymeleaf im hinzugefügten Code befassen.
thymeleaf ist eine Template-Engine, die von springboot verarbeitet werden kann. Beschrieben als th: 〇〇. [Thymeleaf-Tutorial] in japanischer Sprache (https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf_ja.html#thymeleaf%E3%81%AE%E7%B4%B9%E4%BB%) Es gibt auch 8B)!
th:action
Ersetzt den Inhalt des Aktionsattributs des Formular-Tags. Die Beschreibungsmethode lautet th: action =" @ {} "
.
Da method = "post" ist, wird die checkPersonInfo-Methode von WebController aufgerufen, wenn die Submit-Schaltfläche gedrückt wird.
th:object
Das Objekt wird durch th: object
angegeben. Auf diese Weise können Sie auf Variablen in Objekten wie * {name} anstelle von personForm.name verweisen.
th:field
Schreiben Sie th: field =" * {Variablenname} "
, um die Variablen in dem durch th: object angegebenen Objekt anzuzeigen.
Da es in der PersonForm-Klasse Namen und Alter gibt, lautet diesmal "th: field =" * {name} "," th: field = "* {age}" ".
Außerdem ist der in th: field =" * {Variablenname} "
beschriebene Variablenname das ID-Attribut und das Namensattribut der Eingabe.
th:if
Schreiben Sie th: if = condition
. Wenn true, werden das Tag und die untergeordneten Elemente angezeigt.
Diese Bedingung ist erfüllt, wenn ein Fehler vorliegt.
th:errors
Schreiben Sie th: error =" * {Variablenname} "
. Bei einem Fehler wird eine Fehlermeldung angezeigt.
Es scheint, als hätten Sie einen Bereich zum Anzeigen von Fehlermeldungen gesichert, indem Sie mit th: if und th: error nach Fehlern gesucht haben.
Erstellen Sie eine Datei results.html in src / main / resources / templates /.
Fügen Sie den Code hinzu, der sich auf die Formel bezieht.
results.html
<html>
<body>
Congratulations! You are old enough to sign up for this site.
</body>
</html>
Wenn auf dem Formularbildschirm kein ungültiger Wert eingegeben wird, wechselt der Bildschirm zu diesem Bildschirm.
Nachdem die Anwendung nun ausgeführt werden kann, überprüfen wir sie.
Geben Sie den folgenden Befehl in das Terminal ein und drücken Sie die Eingabetaste.
Terminal
$ ./mvnw spring-boot:run
Wenn Sie dann auf "http: // localhost: 8080 /" zugreifen, sollte der folgende Formularbildschirm angezeigt werden. (Form.html wird angezeigt)
** Geben Sie ein Zeichen für den Namen und eine Zahl unter 18 für das Alter ein und klicken Sie auf die Schaltfläche Senden, um eine Fehlermeldung anzuzeigen. ** ** **
** Wenn Sie auf die Schaltfläche "Senden" klicken, ohne das Alter einzugeben, wird eine Fehlermeldung angezeigt. ** ** **
** Geben Sie 2 oder mehr Zeichen für den Namen und 18 oder mehr für das Alter ein und klicken Sie auf die Schaltfläche Senden, um den Ergebnisbildschirm (result.html) anzuzeigen. ** ** **
Danke für deine harte Arbeit! erledigt!
** Überprüfung des Eingabewerts mit Spring Boot ** ** Wenn es sich um einen Controller handelt, der nur den Ansichtsnamen zurückgibt, benötigen Sie keinen separaten Controller! ** ** Validierungs- und Fehlermeldung **
Recommended Posts