2009-12-08 6 views
2

J'ai une application Flex qui édite un objet modérément complexe, et j'aimerais mettre en place une validation côté client sur plusieurs parties de l'éditeur. L'éditeur est un ensemble d'objets imbriqués:Quelle est la meilleure façon de valider un formulaire Flex complexe?

Form -> 
    TabNavigator -> 
     Tab1 -> 
      Component1.1 
      Component1.2 
     Tab2 -> 
      Component2.1 
      Component2.2 
    &c 
    SubmitButton 

La structure fait écho le modèle de données assez près, et l'interface utilisateur est ce que le projet a besoin, donc je ne vais pas être trop rapide pour restructurer les classes là-bas si Je n'ai pas besoin de - le temps est aussi un problème. Ce que je veux faire est d'avoir validateurs pour chacun des Component* cas que:

  • Afficher les infobulles de validation et l'interface utilisateur des notes sur l'élément de l'interface utilisateur concerné
  • Désactiver submitButton lorsqu'une partie du formulaire est pas valide
  • (facultativement) fournir suffisamment d'informations que je peux afficher un message d'erreur dans le formulaire.

Quelle est la meilleure façon de faire à ce sujet?

Répondre

0

Je suppose que vous avez vérifié mx.validators.Validator classe et ses différentes sous-classes comme

  • CreditCardValidator
  • CurrencyValidator
  • DateValidator
  • EmailValidator
  • NumberValidator
  • PhoneNumberValidator
  • RegExpValidator
  • SocialSecurityValidator
  • StringValidator
  • ZipCodeValidator
+0

Oui. Je ne suis pas intéressé par Flex 101; Je recherche des idées pour un design qui facilitera l'extension du formulaire tout en conservant une validation approfondie de tous les sous-formulaires et autres. –

2

Lorsque le formulaire est créé, créez un tableau pour contenir des références à tous les validateurs des composants de votre forme. Ensuite, lorsque l'utilisateur soumet le formulaire, vérifiez que toutes les entrées transmettent votre critère.

if ((Validator.validateAll(validatorArr) as Array).length != 0){ 
    Alert.show("There are errors on the form. Please correct before saving.", "Form Errors");} 
else { /* do something*/} 
1

Après avoir traité ce genre de cas d'utilisation beaucoup trop de fois, je me suis finalement décidé d'écrire ma propre sous-classe de formulaire qui offre la validation de tous les éléments comme un comportement intégré.

L'idée a évolué loin de là, mais si vous êtes curieux, consultez le projet open source que je publiais sur bitbucket à

http://bitbucket.org/rpathsync/smartform

SmartForms (et SmartFormItems) gérer la création de formulaires et de validation , etc. en utilisant un "descripteur" XML. La raison principale de ceci était d'autoriser les formulaires générés par le serveur puisque nous traitons souvent des objets dont le client n'a aucune connaissance a priori (notre serveur est connectable, donc le besoin de descripteurs de formulaires fournis par le serveur)

le code que vous voulez probablement, mais les classes liées à la validation dans ce référentiel pourraient vous intéresser.

Questions connexes