Question

Dans JSF, est-il possible de résoudre le scénario de validation / mise à jour suivant à l'aide du cadre de validation de JSF (validateurs, immédiat, obligatoire, etc.)?

+-- Form ----------------------------------------------------+
|                                                            |
| Field A: |____________|v|                                  |
| Field B: |____________|v|                                  |
| Field C: |____________|v| Button: [Update C using A and B] |
| Field D: |____________|v| Button: [Update D using B and C] |
|                                                            |
| More Fields: ...                                           |
|                                                            |
| Button : [Submit All]                                      |
+------------------------------------------------------------+

Là où tous les champs sont déroulants et où appuyer sur le bouton [Update C] ne ferait valider que A, B et C, mais pas le reste, appuyer sur le bouton [Update D] ne ferait que faire apparaître les champs B, C et D valider et appuyer sur le bouton [Submit All] entraînerait la validation de tous les champs.

Était-ce utile?

La solution

Techniquement, oui, il est possible de le faire avec les validateurs / immédiat. Cependant, cela ne serait pas particulièrement simple.

Si vous ajoutez des validateurs, la logique de [Mettre à jour C à l'aide de A et B] ne sera exécutée que si tous les validateurs sont acceptés ou si son attribut immédiat a été défini sur true. Si son attribut immédiat a été défini sur true, la logique du bouton ne peut pas lire les valeurs du composant soumis à l'aide de getValue ou tout objet auquel le composant est lié; il doit utiliser getSubmittedV. (une mauvaise idée).

Une meilleure approche serait de faire votre logique de validation dans un bean géré auquel tous les contrôles sont liés. Vous pouvez mettre la logique de validation dans les méthodes auxquelles vos boutons sont liés. Utilisez le bouton [Soumettre tout] pour enregistrer vos données validées dans votre base de données / magasin de persistance / peu importe.

Autres conseils

Je faisais généralement des choses similaires avec Ajax, dans lequel je soumettais au serveur les pièces qui m'intéressaient, les validerais / traitais là-bas et renvoyais les résultats à la page. D'autre part, c'est un contournement complet de JSF et de ses mécanismes de validation, donc je suppose que ce n'est pas vraiment la solution la plus intelligente / optimale ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top