Validation de formualire JavaFX avec FormsFX

FormsFX Maven

<dependency>
   <groupId>com.dlsc.formsfx</groupId>
   <artifactId>formsfx-core</artifactId>
   <version>11.3.2</version>
</dependency>

JavaFX FormsFX Field et Validator

package fr.ronanlefichant.formvalidation;

import com.dlsc.formsfx.model.structure.Field;
import com.dlsc.formsfx.model.structure.Form;
import com.dlsc.formsfx.model.structure.Group;
import com.dlsc.formsfx.model.validators.CustomValidator;
import com.dlsc.formsfx.model.validators.RegexValidator;
import com.dlsc.formsfx.model.validators.StringLengthValidator;
import com.dlsc.formsfx.view.renderer.FormRenderer;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 * JavaFX App
 */
public class App extends Application {

  @Override
  public void start(Stage stage) {

    // Vérifie l'email
    RegexValidator shouldBeValidEmailValidator = RegexValidator.forEmail("L'email doit être valide");

    // Vérifie si le mot de passe contient des lettres minuscules et majuscules
    CustomValidator < String > shouldContainUpperAndLowerCaseValidator = CustomValidator.forPredicate(
      value -> !value.equals(value.toUpperCase()) && !value.equals(value.toLowerCase()),
      "Le mot de passe doit contenir des minuscules et majuscules");

    // Vérifie si le mot de passe contient au moins un chiffre
    RegexValidator shouldContainNumberValidator = RegexValidator.forPattern(".*[0-9].*",
      "Le mot de passe doit contenir au moins un chiffre");

    // Vérifie si le mot de passe contient au moins 10 caractères
    StringLengthValidator atLeastlengthOf10 = StringLengthValidator.atLeast(10,
      "Le mot de passe doit contenir au moins 10 caractères");

    // Vérifie si le mot de passe contient au moins un caractère spécial
    RegexValidator shouldContainSpecialsValidator = RegexValidator.forPattern(".*[\\%\\^\\~\\|\\<\\>\\&\\@\\#].*",
      "Le mot de passe doit contenir au moins un caractère spécial");

    // Création du formulaire
    Form form = Form.of(Group.of(
        // Champ texte vide
        Field.ofStringType("")
        // Le libellé
        .label("Nom d'utilisateur")
        // Champ requis
        .required("Ce champ doit être renseigné")
        // Validation
        .validate(shouldBeValidEmailValidator),
        // Champ mot de passe vide
        Field.ofPasswordType("")
        // Le libellé
        .label("Mot de passe")
        // Champ requis
        .required("Ce champ doit être renseigné")
        // Validation
        .validate(
          shouldContainUpperAndLowerCaseValidator, shouldContainNumberValidator, atLeastlengthOf10,
          shouldContainSpecialsValidator)))
      // Titre du formulaire
      .title("Login");

    var scene = new Scene(new StackPane(new FormRenderer(form)), 640, 480);
    stage.setScene(scene);
    stage.show();
  }

  public static void main(String[] args) {
    launch();
  }

}

Commentaires