[JAVA] Die Frühjahrsvalidierung war in der Reihenfolge von Form und BindingResult wichtig

Einführung

Schön, Sie kennenzulernen, das ist NekoSarada1101. Dies ist Qiitas erster Beitrag. Ich studiere Java und Servlets an einer Berufsschule. Ich studiere derzeit das Spring-Framework selbst und werde einen Artikel über einen Fehler veröffentlichen, dessen Behebung lange gedauert hat.

Hauptthema

Ich habe den folgenden Controller definiert, um die Eingabe auf dem Anmeldebildschirm der Webanwendung zu überprüfen, die ich für das Studium von Spring entwickle.

@PostMapping("/auth")
public String postLogin(@ModelAttribute @Validated LoginForm form, Model model, BindingResult result) {
    if (result.hasErrors()) {
        return "login";
    }
    User user = userService.login(form.getId(), form.getPassword());
    model.addAttribute("user", user);

    return "redirect:/menu";
}

Wenn bei der Eingabe kein Problem auftritt, kehren Sie zum nächsten Bildschirm zurück. Wenn dies der Fall ist, kehren Sie zum Anmeldebildschirm zurück. Wenn ich eine Anfrage an diesen Controller sende ...

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Apr 28 14:36:33 JST 2020
There was an unexpected error (type=Bad Request, status=400).

Der obige Fehler wurde auf dem Bildschirm angezeigt.

Ursache und Lösung

Die Ursache war die Reihenfolge der Controller-Argumente. Es scheint, dass das BindingResult unmittelbar nach dem zu validierenden Form-Objekt definiert werden muss.

@PostMapping("/auth")
public String postLogin(@ModelAttribute @Validated LoginForm form, BindingResult result, Model model) {
    if (result.hasErrors()) {
        return "login";
    }
    User user = userService.login(form.getId(), form.getPassword());
    model.addAttribute("user", user);

    return "redirect:/menu";
}

Es muss in der Reihenfolge "hoge (Form, BindingResult, Model)" wie folgt sein.

Am Ende

Es gibt kein Fehlerprotokoll auf der Konsole, und dies ist das erste Mal, dass aufgrund der Reihenfolge der Argumente ein Fehler aufgetreten ist. Ich hatte keine Ahnung, was das Problem war, und es dauerte lange, bis ich es gelöst hatte.

Wie ich zu Beginn schrieb, bin ich im ersten Beitrag nicht an diese Ausgaben gewöhnt. Wenn Sie also Fehler oder Ratschläge haben, wäre ich Ihnen dankbar, wenn Sie mich freundlich informieren könnten.

Recommended Posts

Die Frühjahrsvalidierung war in der Reihenfolge von Form und BindingResult wichtig
[Für Anfänger] DI ~ Die Grundlagen von DI und DI im Frühjahr ~
Reihenfolge der Verarbeitung im Programm
Filtern Sie das Ergebnis von BindingResult [Spring]
[Java] Ordnen Sie die Daten des vergangenen Montags und Sonntags der Reihe nach an
Formular, das den Wert des sich wiederholenden Elements in Spring MVC erhält
[Bestellmethode] Legen Sie die Reihenfolge der Daten in Rails fest
[Rails] Rangfolge und Paginierung in der Reihenfolge der Likes
Installieren Sie das Plug-In in Eclipse
Verwenden Sie das Findbugs-Plugin in Eclipse
Die Frühjahrsvalidierung war in der Reihenfolge von Form und BindingResult wichtig
Reihenfolge der Verarbeitung im Programm
Spring Autowired wird im Konstruktor geschrieben
Konsoleneingabe in Java (Verständnis des Mechanismus)
[Bestellmethode] Legen Sie die Reihenfolge der Daten in Rails fest
Zeigen Sie die Gradle-Aufgabe im Spring Boot-Projekt an
Geben Sie die statische Ressourcencodierung in Spring Boot an
Bis zur Verwendung von Spring Data und JPA Part 2
Bis zur Verwendung von Spring Data und JPA Part 1
Überprüfen Sie das Verhalten von getOne-, findById- und Abfragemethoden mit Spring Boot + Spring Data JPA
[Spring Data JPA] Kann die And-Bedingung in der automatisch implementierten Löschmethode verwendet werden?
Verzweigungsverarbeitung mit dem Rückgabewert von RestTemplate und dem Statuscode von ResponseEntity in Spring Boot
Wurde im Basisjahr der Java-Kalenderwoche durchgeführt
Fügen Sie die Datei in die Eigenschaften eines Strings mit Spring XML-Konfiguration ein
Hat zu Gradle beigetragen und wurde im Release Note genannt
[Rails] Bei der Beschreibung der Validierung ist Vorsicht geboten
Erstellen Sie weitere Registerkarten und Fragmente im Fragment von BottomNavigationView
Federvalidierung und Fehlercode
Als ich mir Sorgen über statische Methoden in der Java-Oberfläche machte, kam ich zur Reihenfolge der Namensinterpretation
Memo der JSUG-Studiengruppe 2018 Teil 2 - Bemühungen um Arbeitsspezifikationen im Frühjahr und in der API-Ära
Ich möchte die Methode des Controllers kennen, bei der die Ausnahme im ExceptionHandler von Spring Boot ausgelöst wurde
Rufen Sie in Spring Boot eine Proxy-Instanz der Komponente selbst ab
Betrachten wir die Bedeutung von "Stream" und "Collect" in der Stream-API von Java.
Koexistenz von Flyway in der eingebetteten Datenbank (h2) der Entwicklungsumgebung und der Release-Datenbank (SQL Server) mit Spring Boot
[Spring Boot] Liste der Validierungsregeln, die in der Eigenschaftendatei für Fehlermeldungen verwendet werden können
Reihenfolge der Routenauswertung in Spark
Erläuterung der Reihenfolge der Schienenrouten
[Rails] Unterschied im Verhalten zwischen Delegat und has_many-through bei Eins-zu-Eins-zu-Viele
Verwenden Sie Spring Mobile, um den Gerätetyp von Smartphones, Tablets und PCs zu bestimmen
Geben Sie die Reihenfolge an, in der die Konfigurationsdateien und Klassen in Java geladen werden
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
Schritte zum Ausführen von Spring Boot beziehen sich auf die Werte in der Eigenschaftendatei
Stellen Sie die Anzahl der Sekunden für den schnellen Vor- und Rücklauf in ExoPlayer ein
Bestätigung und Umgestaltung des Flusses von der Anfrage zum Controller in [httpclient]
(In 1 Minute bestimmen) Wie verwende ich leer ?, Leer? Und präsent?
Dies und das der Implementierung der zeitlichen Beurteilung von Daten in Java
So ändern Sie die maximale und maximale Anzahl von POST-Daten in Spark
Berechnen Sie den Prozentsatz von "gut", "normal" und "schlecht" im Fragebogen mit SQL
Finden Sie das Maximum und Minimum der fünf in Java eingegebenen Zahlen
[Rails] Die Ursache dafür, dass nicht gepostet werden konnte, war in form_with
Zeigen Sie die dreidimensionale Struktur von DNA und Protein in Ruby-im Fall von GR.rb an