Dans cet article, j'aimerais écrire sur l'implémentation de la fonction de validation à l'aide de Play Framework. La source peut être trouvée sur GitHub.
Pour réaliser la fonction de validation en utilisant les parties de Play Framework. Je voudrais vérifier les éléments d'entrée à partir de l'écran du formulaire et afficher un message d'erreur à l'écran si les éléments d'entrée ne sont pas valides.
validation La fonction de validation est indispensable pour que les applications web vérifient la validité des données saisies depuis l'écran. De nombreux frameworks sont équipés de parties qui prennent en charge la réalisation de fonctions de validation par défaut, et il existe également des parties hautement fonctionnelles et pratiques dans Play Framework. Je les ai utilisés pour implémenter la fonction de validation. La structure des fichiers est la suivante.
PlayValidation
├── app
│ ├── checks
│ │ ├── Check.java
│ │ ├── IndexCheck.java
│ │ └── unit
│ │ ├── EqualsCheck.java
│ │ ├── ManagerLimitCheck.java
│ │ └── UnitCheck.java
│ ├── common
│ │ └── constants
│ │ └── Job.java
│ ├── controllers
│ │ └── AppController.java
│ ├── forms
│ │ └── IndexForm.java
│ └── views
│ ├── formTable.scala.html
│ ├── index.scala.html
│ ├── main.scala.html
│ └── tableRowInput.scala.html
├── conf
│ ├── messages
│ └── routes
└── public
└── stylesheets
└── main.css
Fondamentalement, c'est la configuration par défaut de Play, mais j'ai créé un package appelé checks et j'ai essayé d'avoir une logique de vérification des données qui ne peut pas être récupérée par annotation.
Cette fois, je voudrais aborder la forme et la vue.
Form Forms a une classe Form. D'autres frameworks ont la possibilité de vérifier des éléments uniques en ajoutant simplement une annotation aux paramètres du formulaire, mais Play a une fonction similaire. Il existe un package appelé play.data.validation.Constraints, qui vous permet d'effectuer des vérifications obligatoires, des vérifications du nombre de caractères, des vérifications d'expressions régulières, etc., de sorte que la vérification d'un seul élément est presque terminée. J'ai créé IndexForm.java avec des éléments susceptibles d'être communs.
IndexForm.java
public class IndexForm {
/**Nom*/
@Required
public String name;
/**âge*/
@Required
@Min(value=15, message="Veuillez entrer au moins 15 ans")
@Max(value=55, message="Veuillez entrer moins de 55 ans")
public Integer age;
/**adresse mail*/
@Required
@Email
public String email;
/**mot de passe*/
@Required
@MinLength(6)
@MaxLength(10)
@Pattern(value="^[0-9a-zA-Z]*$", message="Veuillez n'entrer que des caractères alphanumériques")
public String password;
/**Retaper le mot de passe*/
public String againPassword;
/**Métier*/
@Required(message="Doit être sélectionné")
public String job;
/**
*Contrôle de validité des données d'entrée
* @renvoyer les informations d'erreur
*/
public List<ValidationError> validate(){
List<ValidationError> errors = new ArrayList<>();
IndexCheck check = new IndexCheck();
check.execute(this, errors);
return errors;
}
}
La méthode * validate () est appelée lors de la liaison d'une valeur d'entrée à un Form, et implémente une validation de validation qui n'a pas été récupérée par l'annotation. Checks est une implémentation originale qui n'a rien à voir avec les fonctionnalités de Play Framework, donc je ne la couvrirai pas dans cet article, mais si vous avez le temps, jetez-y un œil et utilisez-la comme référence (ou faites-la remarquer). *
Chaque effet d'annotation est le suivant
Il y a d'autres choses utiles, c'est donc une bonne idée de jeter un coup d'œil aux contraintes. Cependant, il est très pratique que la validation d'un seul élément puisse être implémentée avec juste cela. Le message que vous souhaitez afficher lorsqu'une erreur d'annotation se produit est défini dans un fichier externe, à savoir conf / messages. Ceux qui passent un argument ont leurs paramètres spécifiques à l'annotation.
conf/messages
error.required =Obligatoire
error.invalid =Veuillez saisir le format correct
error.max = {0}Veuillez entrer par âge
error.email =Veuillez saisir votre adresse e-mail
error.minLength = {0}Veuillez saisir plus de caractères
error.maxLength = {0}Veuillez saisir ci-dessous les caractères
De cette façon, vous pouvez définir le message par défaut. Si vous ne passez aucun argument, vous utiliserez ce message d'erreur. S'il n'est pas défini ici, le message défini par défaut dans Play sera utilisé. error.invalid est un message d'erreur lorsque la valeur d'entrée ne peut pas être liée au paramètre Form en raison d'un type incorrect et échoue.
View Dans Play Framework, le html dit dynamique appelé scala.html joue le rôle de la partie vue. Vous trouverez ci-dessous index.scala.html qui arrange simplement les balises d'entrée du formulaire avec les balises de table. ..
scala:index.scala.html
@(playForm: Form[forms.IndexForm])
@import collection.JavaConversions._
@import helper._
@main("Validation Test") {
<h1>Écran de formulaire</h1>
@form(action = routes.AppController.post()) {
@formTable{
@inputText(
playForm("name"),
'_label -> "Nom"
)(tableRowInput, implicitly[Messages])
@inputText(
playForm("age"),
'_label -> "âge",
'placeholder -> "15-55 ans"
)(tableRowInput, implicitly[Messages])
@inputText(
playForm("email"),
'_label -> "adresse mail"
)(tableRowInput, implicitly[Messages])
@inputPassword(
playForm("password"),
'_label -> "mot de passe",
'placeholder -> "Alphabet uniquement"
)(tableRowInput, implicitly[Messages])
@inputPassword(
playForm("againPassword"),
'_label -> "Retaper le mot de passe"
)(tableRowInput, implicitly[Messages])
@select(
playForm("job"),
options = common.constants.Job.getMap().toSeq,
'_label -> "Métier"
)(tableRowInput, implicitly[Messages])
}
<button>Envoyer</button>
}
}
Play a un package views.html.helper qui génère assez bien les balises html. Vous pouvez en savoir plus sur helper en vous référant à la page officielle. En utilisant helper, vous pouvez facilement l'associer à Form du côté Java. Il existe une valeur par défaut pour le modèle généré par helper, mais ici, je voulais afficher la balise de table, donc [tableRowInput](https://github.com/hys-rabbit/PlayValidation/blob/master/app/views/ J'ai créé ma propre tableRowInput.scala.html) et je l'ai utilisée comme modèle.
Maintenant, je voudrais exécuter le serveur et voir l'écran.
Cliquez sur le bouton "Envoyer"
Le message s'affichera correctement.
Vous n'êtes pas nécessairement obligé d'utiliser les fonctionnalités du framework, mais compte tenu de la productivité et de la maintenance, je pense que vous devriez adopter autant que possible les fonctionnalités du framework. Au contraire, je ne comprends pas la signification d'utiliser le framework sans utiliser les fonctions du framework. Si vous êtes un ingénieur qui adopte Play pour un nouveau développement, j'aimerais que vous conceviez en tirant parti des fonctions de Play.
Recommended Posts