Créons une application TODO dans Java 13 TODO form validation 1: Character limit-Update Gradle to use @Validated

Bonjour.

Continuons à implémenter la gestion des exceptions jusqu'à la dernière fois!

Collection de liens de création d'application TODO

1: [Comprendre les super bases] Une brève description de MVC 2: [Préparer un modèle] Je veux créer un modèle avec Spring Initializr et créer un monde Hello 3: [Connexion / Paramètres / Affichage des données avec MySQL] Enregistrer les données temporaires dans MySQL-> Tout obtenir-> Afficher en haut 4: [Fonction POST] Implémentation de la fonction de publication 5: [Fonction PATCH] Basculer l'affichage TODO 6: [Easy to use JpaRepository] Implémentation de la fonction de recherche [7: [Commun avec les fragments de modèle Thymeleaf] Créer un en-tête] (https://qiita.com/nomad_kartman/items/8c33eca2880c43a06e40) [8: [Fonction PUT] Implémentation de la fonction d'édition] (https://qiita.com/nomad_kartman/items/66578f3f91a422f9207d) [9: [Tweak] Trier l'affichage TODO dans l'ordre chronologique + Régler la date d'échéance à la date d'aujourd'hui] (https://qiita.com/nomad_kartman/items/5ee2b13a701cf3eaeb15) 10: [Gestion des exceptions avec le ressort] Un bref résumé de la gestion des exceptions [11: [Gestion des exceptions avec ressort] Gestion des exceptions lors de l'accès à TODO avec un ID inexistant] (https://qiita.com/nomad_kartman/items/a486838153a563767169) [12: [Gestion des exceptions au printemps] Traitement lorsqu'une requête arrive avec un HttpMethod / Processing inutilisé lorsqu'une erreur se produit sur le serveur] (https://qiita.com/nomad_kartman/items/8a1a06b42138b495e29c) 13: [Gestion des exceptions avec ressort] Validation du formulaire TODO 1: Limite de caractères - Mettre à jour Gradle pour utiliser @Validated

Ajouter une nouvelle dépendance à Gradle

Spring de cette application utilise la Version2.3.0.RELEASE.

Si vous regardez 2.3 Release Note, vous pouvez voir les annotations qui seront utilisées cette fois, telles que @Validated et @Size. Il ne peut pas être utilisé par défaut.

Donc, selon le contenu du lien ci-dessus, ajoutez les liens liés à la validation à la partie dépendance de build.gradle.

Ajouté à build.grale

build.gradle


dependencies {
	//Abréviation
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	}

En ajoutant cette dépendance, des annotations liées à la validation peuvent être utilisées.

Mettre à jour build.gradle

Le gradle sera mis à jour car il ne sera pas reflété simplement en l'ajoutant. Veuillez vous référer à l'image ci-dessous. Screen Shot 0002-11-07 at 20.16.03.png

Une fois la mise à jour terminée avec succès, l'étape suivante consiste à modifier le contrôleur et à vérifier la classe de données de formulaire utilisée pour publier TODO.

Effectuer la validation

Confirmation du contenu publié

Commençons par vérifier le contenu de validation de ce TODO.

  1. Le contenu publié comporte de 1 à 30 caractères
  2. Ne pas autoriser les caractères vides
  3. La publication du même contenu n'est pas autorisée

Ce sont les trois points. Cette fois, je validerai le cas où il est de 1 à 30 caractères.

Vérification de la classe de données du formulaire

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;
}

Ça ressemble à ça. @ NotNull n'autorise pas la valeur null pour title (contenu de l'article). «@ size» peut être les caractères minimum et maximum.

Modification de la classe de contrôleur

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";
    }

Ajout de @ Validated,BindingResult,RedirectAttributes.

@ Validated est une annotation qui vérifie le contenu de validation du contenu publié TodoForm. Vous pouvez maintenant rechercher Null et déterminer le nombre de caractères.

Si la validation est interceptée, le contenu de l'erreur est enregistré dans la erreur de variable de classe BindingResult.

RedirectAttributes est utilisé pour revenir au premier plan.

C'est une branche conditionnelle lorsque le contenu de l'erreur est enregistré par erreur dans la partie de if (error.hasErrors ()) ... (c'est-à-dire qu'il est bloqué en validation).

Nous transmettons «error» comme «variable errorMessages» au début.

Afficher les détails de l'erreur sur le devant

Ajoutez ce qui suit directement sous l'en-tête.

resources/templates/top.html


<!--Zone d'affichage des messages d'erreur-->
<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>

J'ai écrit plus tôt que je passerai errorMessages quand il y a une erreur, mais hier dans Thymeleaf, j'ai ajouté une instruction if pour déterminer s'il y a des messages d'erreur.

S'il y a des erreurs, chaque instruction les affichera toutes une par une.

Il y a th: text =" $ {error.defaultMessage} ", mais le contenu du message d'erreur peut être obtenu avec .defaultMessage.

Si vous essayez de saisir plus de 30 caractères, le message suivant s'affiche.

Screen Shot 0002-11-07 at 20.44.33.png

Je n'y toucherai pas cette fois, mais vous pouvez changer ce message en ce que vous voulez!

Dans le prochain article, je reviendrai sur les deux validations restantes!

Recommended Posts

Créons une application TODO dans Java 13 TODO form validation 1: Character limit-Update Gradle to use @Validated
Créons une application TODO en Java 4 Implémentation de la fonction de publication
Créons une application TODO en Java 6 Implémentation de la fonction de recherche
Créons une application TODO en Java 8 Implémentation des fonctions d'édition
Créons une application TODO avec Java 1 Brève explication de MVC
Créons une application TODO en Java 5 Changer l'affichage de TODO
Créons une application TODO en Java 9 Créer un affichage TODO Trier par date et heure + Définir la date d'échéance sur la date actuelle
Faisons une application TODO avec Java 2 Je veux créer un modèle avec Spring Initializr et créer Hello world
Créons une application TODO en Java 11 Gestion des exceptions lors de l'accès à un TODO avec un ID inexistant
Comment créer un nouveau projet Gradle + Java + Jar dans Intellij 2016.03
Créons une application TODO avec Java 3 Enregistrez les données temporaires dans MySQL-> Tout obtenir-> Afficher en haut
Créer une application TODO dans Java 7 Créer un en-tête
Essayez de créer un babillard en Java
Faisons une application de calculatrice avec Java ~ Créez une zone d'affichage dans la fenêtre
Comment créer un environnement Java en seulement 3 secondes
J'ai essayé de créer une compétence Clova en Java
Comment créer un URI de données (base64) en Java
Créer un servlet Java et un fichier WAR JSP à déployer sur Apache Tomcat 9 avec Gradle
Comment créer une partie d'espace réservé à utiliser dans la clause IN
Créer une méthode pour renvoyer le taux de taxe en Java
Comment simuler le téléchargement de formulaires post-objet vers OSS en Java
Étudiez Java: utilisez Timer pour créer quelque chose comme un minuteur de bombe
[Enum_help] Utilisez enum_help pour créer une boîte de sélection affichée en japonais!
Préparation à la création de l'application Rails
Utilisons Twilio en Java! (Introduction)
Comment utiliser les classes en Java?
Pour créer un fichier Zip lors du regroupement des résultats de recherche de base de données en Java
[Java] Comment utiliser une sous-chaîne pour découper une partie d'une chaîne de caractères
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
Volume d'essais pour créer une application Web Java sur Windows Server 2016
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Un mémo pour créer un formulaire simple en utilisant uniquement HTML et CSS dans Rails 6
Créons une bibliothèque d'opérations de stockage de fichiers polyvalente (?) En faisant abstraction du stockage / acquisition de fichiers avec Java
[Azure] J'ai essayé de créer une application Java pour la création d'applications Web gratuites - [Débutant]