2017-08-25 4 views
0

J'ai un système que je veux migrer vers vaadin 8. Je voulais demander de l'aide sur la façon de valider un TextField basé sur des expressions régulières. J'ai un code qui fonctionne pour Vaadin 7 mais pas Vaadin 8 qui pourrait expliquer davantage ce que je demande. Un exemple de code comme ci-dessous serait très apprécié.Comment valider un TextField dans un formulaire Vaadin 8

TextField txtFirstname = new TextField(); 
txtFirstname.setInputPrompt("Enter the firstname e.g. John or Jane"); 
txtFirstname.addValidator(new RegexpValidator("^[a-zA-Z _\\-'\" ]{3,25}$", "Invalid FirstName")); 
txtFirstname.addBlurListener(new BlurListener() {   
    @Override 
    public void blur(BlurEvent event) { 
     //txtFirstname.validate(); 
     if(txtFirstname.isValid()==false) 
     { 
      txtFirstname.setValidationVisible(true); 
      //txtFirstname.focus(); 
     } 
     else if(txtFirstname.isValid()==true) 
      { 
        txtFirstname.setValidationVisible(false); 
      } 
     } 
    }); 
+0

Vous peut donner des détails, avez-vous des erreurs? avertissements ? autre ? – azro

+0

Le code ci-dessus fonctionne parfaitement dans Vaadin 7 mais ne peut pas fonctionner dans Vaadin 8. La méthode isValid() n'existe pas dans Vaadin 8. Je voulais essentiellement savoir comment valider un textfield en utilisant des expressions régulières dans Vaadin 8 (je ne sais comment fais-le pour Vaadin 7 comme je l'ai indiqué ci-dessus) Merci. –

+0

Avez-vous consulté la [documentation] (https://vaadin.com/docs/-/part/framework/components/components-fields.html#validating-field-values)? Cela devrait être suffisant pour commencer. Si vous avez des questions spécifiques à ce sujet, nous pouvons certainement vous aider. –

Répondre

0

J'ai travailler un peu Vaadin, mais je ne regarde autour de « validateur » Je propose donc un moyen plus facile:

TextField txtFirstname = new TextField(); 
txtFirstname.setInputPrompt("Enter the firstname e.g. John or Jane"); 
String pattern = "^[a-zA-Z _\\-'\" ]{3,25}$"; 

txtFirstname.addBlurListener(new BlurListener() {   
    @Override 
    public void blur(BlurEvent event) { 

     if(!txtFirstname.getValue().match(pattern)){ //<- basic string check 
      txtFirstname.setValidationVisible(true); 
      //txtFirstname.focus(); 
     } 
     else if(txtFirstname.isValid()==true){ 
      txtFirstname.setValidationVisible(false); 
     } 
    } 
}); 

Et utiliser !booleanValue plutôt que booleanValue==false

+0

N'a jamais pensé à ça merci. Les méthodes .setValidationVisible et isValid() ont été dépréciées dans Vaadin 8 mais votre code (correspondant à l'entrée de l'expression régulière) devrait fonctionner –

+2

Ce n'est pas la façon dont Vaadin a prévu de valider les champs de formulaire. Le moyen préféré consiste à utiliser un «classeur» pour lier le champ à ses données. Avec le 'Binder' vous pouvez ajouter des validateurs/convertisseurs comme vous l'avez fait avec Vaadin 7. Voir [docs] (https://vaadin.com/docs/-/part/framework/components/components-fields.html#validating-field -valeurs) –