[JAVA] Organisieren Sie die Unterschiede im Verhalten von @NotBlank, @NotEmpty und @NotNull mit Spring Boot + Thymeleaf

Was du machen willst

Ich habe das Verhalten der JSR-303-Bean-Validierung nicht gut verstanden, was zu Verwirrung im Feld geführt hat, daher werde ich versuchen, es zu organisieren. Insbesondere die folgenden Anmerkungen. · Javax.validation.constraints.NotBlank (@NotBlank) · Javax.validation.constraints.NotEmpty (@NotEmpty) · Javax.validation.constraints.NotNull (@NotNull)

Fazit

wwwww.PNG

Bitte beachten Sie, dass der Scheck nicht abgefangen wird, wenn alle Leerzeichen Leerzeichen in voller Breite sind.

Überprüfung

Ich habe versucht, dies auf dem folgenden einfachen Bildschirm zu überprüfen.

HelloController.java


package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import com.example.demo.form.HelloForm;

@Controller
@RequestMapping(value = "/")
public class HelloController {
	
	private static final String SAMPLE_URL = "sample/Hello";

	@GetMapping
	public String index(@ModelAttribute HelloForm helloForm) {
		return SAMPLE_URL;
	}

	@PostMapping
	public String register(@Validated HelloForm helloForm, BindingResult result) {
		return SAMPLE_URL;
	}
}

HelloForm.java


package com.example.demo.form;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

public class HelloForm {
	
	@NotBlank
	String notBlankField;
	
	@NotEmpty
	String notEmptyField;
	
	@NotNull
	String notNullField;
	
	public String getNotBlankField() {
		return notBlankField;
	}

	public void setNotBlankField(String notBlankField) {
		this.notBlankField = notBlankField;
	}

	public String getNotEmptyField() {
		return notEmptyField;
	}

	public void setNotEmptyField(String notEmptyField) {
		this.notEmptyField = notEmptyField;
	}

	public String getNotNullField() {
		return notNullField;
	}

	public void setNotNullField(String notNullField) {
		this.notNullField = notNullField;
	}
}

Hello.html


<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
	<form method="post" action="/" th:object="${helloForm}">
		<span th:if="${#fields.hasErrors('notBlankField')}" th:errors="*{notBlankField}" style="color: red"></span><br /> 
		NotBlankField:<input type="text" name="notBlankField" th:field="*{notBlankField}" /><br /> 
		<span th:if="${#fields.hasErrors('notEmptyField')}" th:errors="*{notEmptyField}" style="color: red"></span><br /> 
		NotEmptyField:<input type="text" name="notEmptyField" th:field="*{notEmptyField}" /><br /> 
		<span th:if="${#fields.hasErrors('notNullField')}" th:errors="*{notNullField}" style="color: red"></span><br /> 
		NotNullField:<input type="text" name="notNullField" th:field="*{notNullField}" /><br /><br />
		<input type="submit" value="Submit" />
	</form>
</body>
</html>

Leerer Charakter

Nur NotBlank und NotEmpty bleiben im Scheck stecken 空文字.PNG

Alle Räume mit halber Breite

Der gesamte Raum in voller Breite

das ist alles.

Recommended Posts

Organisieren Sie die Unterschiede im Verhalten von @NotBlank, @NotEmpty und @NotNull mit Spring Boot + Thymeleaf
Siehe das relative Umleitungsverhalten mit der Einstellung server.tomcat.use-relative-redirects in Spring Boot
Sehen Sie sich das Verhalten von Entitätsaktualisierungen mit Spring Boot + Spring Data JPA an
Geben Sie die statische Ressourcencodierung in Spring Boot an
Greifen Sie mit jdbcTemplate auf das integrierte h2db des Spring Boot zu
Überprüfen Sie das Verhalten von getOne-, findById- und Abfragemethoden mit Spring Boot + Spring Data JPA
Eine Geschichte voller Grundlagen von Spring Boot (gelöst)
Verwenden Sie thymeleaf3 mit parent, ohne Spring-Boot-Starter-Parent in Spring Boot anzugeben
Verwendung von Thymeleaf mit Spring Boot
Rufen Sie in Spring Boot eine Proxy-Instanz der Komponente selbst ab
Koexistenz von Flyway in der eingebetteten Datenbank (h2) der Entwicklungsumgebung und der Release-Datenbank (SQL Server) mit Spring Boot
Schritte zum Ausführen von Spring Boot beziehen sich auf die Werte in der Eigenschaftendatei
Lösen Sie die Thymeleaf-Syntaxprüfung in Spring Boot
Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf
[Java] [Spring] Testen Sie das Verhalten des Loggers
Führen Sie die WEB-Anwendung mit Spring Boot + Thymeleaf aus
Rufen Sie den in der Controller-Klasse von Spring Boot definierten Pfad als Liste ab
Ressourcenhandler-Einstellungen bei der Bereitstellung von SPA mit der statischen Ressourcenfunktion von Spring Boot
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
Testen Sie den Controller mit Mock MVC im Spring Boot
Asynchrone Verarbeitung mit regelmäßiger Ausführung in Spring Boot
Die Geschichte der Erhöhung der Spring Boot 1.5-Serie auf die 2.1-Serie
Lassen Sie uns das Gefühl von Spring Boot + Swagger 2.0 überprüfen
Erstellen Sie eine CRUD-App mit Spring Boot 2 + Thymeleaf + MyBatis
Erstellen Sie Ihr eigenes Dienstprogramm mit Thymeleaf mit Spring Boot
Zeigen Sie die Gradle-Aufgabe im Spring Boot-Projekt an
[Spring Boot] Die Geschichte, dass die Bean der Klasse mit der Annotation ConfigurationProperties nicht gefunden wurde
Nehmen Sie das externe Glas mit Spring boot2 + Maven3 in das Paket auf
Untersuchte asynchrone Ausführung von Abfragen in Spring Boot 1.5.9
[Für Anfänger] DI ~ Die Grundlagen von DI und DI im Frühjahr ~
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Überprüfen Sie das Verhalten von Java Intrinsic Locks mit bpftrace
SSO mit GitHub OAuth in der Spring Boot 1.5.x-Umgebung
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Erstellen Sie Restapi mit Spring Boot (bis zum Ausführen der App)
Bis Sie mit der Entwicklung mit Spring Boot in Eclipse 1 beginnen
Booten nach Umgebung mit Spring Boot of Maven
Überprüfen Sie das Verhalten von include, exclude und ExhaustedRetryException von Spring Retry
Bis Sie mit der Entwicklung mit Spring Boot in Eclipse 2 beginnen
Geben Sie spring.profiles.active über context-param in web.xml in Spring Boot an
Steuern Sie den Spring Batch-Verarbeitungsablauf mit JavaConfig.
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
Verwendung derselben Mapper-Klasse in mehreren Datenquellen mit Spring Boot + MyBatis
Verzweigungsverarbeitung mit dem Rückgabewert von RestTemplate und dem Statuscode von ResponseEntity in Spring Boot
Lassen Sie uns herausfinden, wie Sie mit Request Body mit der REST-API von Spring Boot empfangen können
Mit Spring Boot herunterladen
Spring Boot 1.x wird im nächsten Jahr EOL erreichen.
Die Geschichte der Erhöhung von Spring Boot von 1.5 auf 2.1 Serie Teil2
Über die Funktion von Spring Boot aufgrund unterschiedlicher Versionen
Ändern Sie das Injektionsziel für jede Umgebung mit Spring Boot 2
Fügen Sie die Datei in die Eigenschaften eines Strings mit Spring XML-Konfiguration ein
Beschleunigen Sie das Testen von Validatoren, für die DI im Spring Boot erforderlich ist
Schneiden Sie SQL in die Eigenschaftendatei mit jdbcTemplate von Spring Boot aus
Bis INSERT und SELECT für Postgres mit Spring Boot und Thymianblatt
Versuchen Sie, die Springcode-Such-API mit Spring Boot aufzurufen
Einführung der Bibliothek ff4j, die Feature Toggle mit Spring Boot realisiert
Finden Sie mit Kotlin die Anzahl der Tage in einem Monat
Melden Sie sich mit HttpServletRequest # in Spring Security in der Servlet 3.x-Umgebung an