2010-07-26 5 views
0

Cela pourrait être une question fondamentale: Je suis en train de comprendre comment le code de validation Struts ci-dessous fonctionne:Struts Validation avec plusieurs règles de validation pour un seul champ

<field property="myField" depends="validwhen, maxlength"> 
    <msg name="validwhen" key="error1.key" /> 
    <msg name="maxlength" key="error2.key"/> 
    <var> 
     <var-name>test</var-name> 
     <var-value> isFieldsShown == "no" </var-value> 
    </var> 
    <var> 
     <var-name>maxlength</var-name> 
     <var-value>128</var-value> 
    </var> 
</field> 

Est-ce comme, d'abord le validwhen règle vérifiée et si elle réussit alors la règle maxlength est vérifiée? OU, si le valide lorsque renvoie la valeur true, le champ est considéré comme valide sans passer à la règle maxlength?

Répondre

0

Cela fait un moment que j'ai travaillé avec le framework de validation, mais d'après ce dont je me souviens, ça ressemble à quelque chose comme ça.

Lorsque vous validez un champ, ce champ est considéré comme valide si toutes les validations réussissent. Si au moins une validation échoue, le champ est considéré comme invalide. Il devrait être logique que s'il y a une liste de validateurs à exécuter, le processus de validation devrait quitter au premier échec (cela n'a aucun sens d'exécuter des validations supplémentaires coûteuses si le champ est invalide car une validation a déjà échoué).

La documentation semble indiquer ce que je me souviens:

validator.dtd - field.depends attribute: La liste délimitée par des virgules validateurs à appliquer contre ce domaine. Pour que le champ réussisse, tous les validateurs doivent réussir.

Field.validate: Exécuter toutes les validations dans la clause depends sur chaque élément, retournant lorsque le premier échoue.

Questions connexes