J'ai un formulaire en JSF2 avec 2 cases à cocher (<h:selectBooleanCheckbox>
). Au moins l'un d'eux devrait être vérifié. Les deux vérifiés sont également ok, mais quand aucun n'est coché, il devrait y avoir une erreur.JSF2: Comment valider deux cases dépendantes?
Cette validation devrait également fonctionner sur ajax, c'est-à-dire que lorsque l'utilisateur vérifie/décoche, le message d'erreur devrait disparaître/apparaître.
J'ai donc lié les deux cases à UISelectBoolean
éléments et validateur ajouté à chacun. Dans le validateur, je vérifie la valeur de la deuxième case à cocher, si elle est fausse, et la case à cocher actuelle est également définie sur faux, un message d'erreur est généré. Smth comme:
if (newValue == false && secondCheckbox.getValue() == false) {
throw new ValidationException();
}
problème est lorsque l'utilisateur désélectionne case à cocher sur la page, tandis que l'autre est également sans contrôle, cette fausse valeur ne va pas au modèle, ni événement UISelectBoolean.
Scénario:
- Au départ, les deux ne sont pas cochées
- utilisateur vérifie checkbox1.
newValue
esttrue
, donc cela est valide, va à UISelectBoolean et le modèle.- L'utilisateur décoche la case à cocher checkbox1. Checkbox2 est
false
,newValue
estfalse
, donc exception est levée. En raison de l'échec de la validation, cette valeurfalse
ne va pas au modèle, ni même à l'élément UISelectBoolean. - Vérifications de l'utilisateur checkbox2.
True
la valeur va au modèle et UISelectBoolean. - L'utilisateur désactive la case à cocher case2. Checkbox1 est toujours décoché sur la page, mais dans le modèle et UISelectBoolean il reste
true
. Donc la validation passe et il n'y a pas de message d'erreur. Sur la page les deux cases à cocher sont désactivées, mais dans le modèle checkbox1 est toujourstrue
.
Comment résoudre ce problème?
Vous ne pouvez pas utiliser ''? –
BalusC
Oui, je ne le savais pas :) Merci! – amorfis
Puis-je ajouter à ? On dirait que f: ajax ne fonctionne pas. –
amorfis