On retrouve dans ce document, l'ensemble des validateurs disponibles.
Pour chaque validateur, on donne sa définition, son fonctionnement et un exemple d'utilisation.
2.1 validateur required
Définition
<validator name="required"
class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
Fonctionnement
Pour vérifier qu'une propriété n'est pas nulle.
Exemple
<field name="observateur">
<field-validator type="required">
<message>validator.maree.required.observateur</message>
</field-validator>
</field>
2.2 validateur requiredstring
Définition
<validator name="requiredstring"
class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
Fonctionnement
Pour vérifier qu'une propriété de type chaîne de caractère n'est pas nulle et non vide.
On peut de plus demander avec le paramètre trim de supprimer toutes les caractères d'espace en début et fin de chaîne.
Exemple
<field name="nom">
<field-validator type="requiredstring">
<message>validator.observateur.required.nom</message>
</field-validator>
</field>
2.3 validateur int
Définition
<validator name="int"
class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
Fonctionnement
Pour valider une propriété de type entière.
On peut fournir une borne minimale (min) et/ou une borne maximale (max).
Exemple
<field name="value">
<field-validator type="int" short-circuit="true">
<param name="min">0</param>
<param name="max">500</param>
<message>validator.bound.value##${min}##${max}</message>
</field-validator>
</field>
2.4 validateur long
Définition
<validator name="long"
class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
Fonctionnement
Pour valider une propriété de type long.
On peut fournir une borne minimale (min) et/ou une borne maximale (max).
Exemple
<field name="value">
<field-validator type="long" short-circuit="true">
<param name="min">0</param>
<param name="max">500</param>
<message>validator.bound.value##${min}##${max}</message>
</field-validator>
</field>
2.5 validateur short
Définition
<validator name="short"
class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
Fonctionnement
Pour valider une propriété de tye short.
On peut fournir une borne minimale (min) et/ou une borne maximale (max).
Exemple
<field name="value">
<field-validator type="short" short-circuit="true">
<param name="min">0</param>
<param name="max">500</param>
<message>validator.bound.value##${min}##${max}</message>
</field-validator>
</field>
2.6 validateur double
Définition
<validator name="double"
class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
Fonctionnement
Pour valider une propriété de tye entier décimal.
On peut fournir une borne minimale (minInclusive ou minExclusive) et/ou une borne maximale (maxInclusive ou maxExclusive).
Exemple
<field name="value">
<field-validator type="double">
<param name="minInclusive">12.0</param>
<param name="maxInclusive">35.0</param>
<message>error##${minInclusive}##${maxInclusive}</message>
</field-validator>
</field>
2.7 validateur date
Définition
<validator name="date"
class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
Fonctionnement
Pour valider une propriété de tye Date.
On peut fournir une borne minimale (min) et/ou une borne maximale (max).
Exemple
<field name="value">
<field-validator type="date" short-circuit="true">
<param name="min">10/10/2007</param>
<param name="max">10/10/20012</param>
<message>validator.bound.value##${min}##${max}</message>
</field-validator>
</field>
2.8 validateur fieldexpression
Définition
<validator name="fieldexpression"
class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
Fonctionnement
Pour valider une expression sur une propréiété donnée.
On doit fournir l'expression de type ognl à appliquer.
Exemple
<field name="dateFin">
<field-validator type="fieldexpression">
<param name="expression">
<![CDATA[dateFin == null || dateFin.after(dateDebut) ]]>
</param>
<message>validator.maree.dateFin.after.dateDebut</message>
</field-validator>
</field>
2.9 validateur email
Définition
<validator name="email"
class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
Fonctionnement
Pour valider un courriel à partir d'une chaîne de caractères.
Exemple
<field name="email">
<field-validator type="email">
<message>validator.invalid.email##${email}</message>
</field-validator>
</field>
2.10 validateur url
Définition
<validator name="url"
class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
Fonctionnement
Pour valider une propriété de type URL.
Exemple
<field name="value">
<field-validator type="url">
<message>validator.invalid.url##${url}</message>
</field-validator>
</field>
2.11 validateur stringlength
Définition
<validator name="stringlength"
class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
Fonctionnement
Pour valider la taille d'une propriété de type chaîne de caractères.
On peut fournir une borne minimale (minLength) ou une borne maximale (maxLength).
On peut de plus avec le drapeau trim supprimer les caractères d'espace en début et fin de chaîne.
Exemple
<field name="value">
<field-validator type="stringlength">
<param name="min">10</param>
<message>validator.stringlength.min##${min}</message>
</field-validator>
</field>
2.12 validateur regex
Définition
<validator name="regex"
class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
Fonctionnement
Pour valider une expression régulière sur une propriété de type chaîne de caractères.
On doit fournir l'expression regex à utiliser.
Exemple
<field name="value">
<field-validator type="regex">
<param name="expression">a.*</param>
<message>validator.begin.by.a##${value}</message>
</field-validator>
</field>
2.13 validateur visitor
Définition
<validator name="visitor"
class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
Fonctionnement
Pour lancer la validation de l'objet via son context.
Si le paramètres appendPrefix est renseigné, on ajoutera ce prefix avant de lancer le validateur externe.
Exemple
<field name="value">
<field-validator type="visitor">
<param name="context">error</param>
<param name="appendPrefix">true</param>
<message>validator.unvalid.value##${value}</message>
</field-validator>
</field>
2.14 validateur conditionalvisitor
Définition
<validator name="conditionalvisitor"
class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
Fonctionnement
Pour lancer la validation d'un objet via son context si une expression est vérifiée.
On doit fournir le context et l'expression ognl à utiliser.
Exemple
<field name="value">
<field-validator type="conditionalvisitor">
<param name="context">error</param>
<param name="expression">value != null</param>
<param name="appendPrefix">true</param>
<message>validator.unvalid.value##${value}</message>
</field-validator>
</field>
3.1 validateur fieldexpressionwithparams
Définition
<validator name="fieldexpressionwithparams"
class="jaxx.runtime.validator.field.FieldExpressionWithParamsValidator"/>
Fonctionnement
Surcharge le validateur filedexpression en permettant d'injecter des paramètres utilisables dansl'expression à évaluer.
On peut actuellement ajouter des paramètres boolean - int - double et string.
Les paramètres sont nommés booleanParams, intParams,...
ils sont de la forme :
(argName:argValue|)*argName:argValue
Ces arguments sont ensuites disponibles sous la forme :
booleans.argName, ints.argName,...
Exemple
<field name="lochSoir">
<field-validator type="fieldexpressionwithparams">
<param name="intParams">maxGap:400</param>
<param name="expression"><![CDATA[lochMatin + ints.maxGap <= lochSoir]]></param>
<message>validator.route.invalid.lochSoir.maximum##${ints.maxGap}</message>
</field-validator>
</field>
3.2 validateur collectionFieldExpression
Définition
<validator name="collectionFieldExpression"
class="jaxx.runtime.validator.field.CollectionFieldExpressionValidator"/>
Fonctionnement
Etends le validateur fieldexpression pour valider une collection.
Exemple
<field name="lochSoir">
- <field-validator type="fieldexpressionwithparams">
<param name="intParams">maxGap:400</param> <param name="expression"><![CDATA[lochMatin + ints.maxGap <= lochSoir]]></param> <message>validator.route.invalid.lochSoir.maximum##${ints.maxGap}</message> </field-validator>
</field>
3.3 validateur collectionUniqueKey
Définition
<validator name="collectionUniqueKey"
class="jaxx.runtime.validator.field.CollectionUniqueKeyValidator"/>
Fonctionnement
Pour vérifier qu'un objet n'est pas déjà présent dans une collection d'objets.
Le paramètre keys définit la liste des propriétés définissant la clef.
Le paramètre againstProperty définit l'objet à vérifier.
Le paramètre againstIndexExpression définit la propriété qui définit la position de l'objet à vérifier.
Exemple
<field name="data">
<field-validator type="collectionUniqueKey">
<param name="keys">espece,longueur</param>
<param name="againstProperty">editBean</param>
<param name="againstIndexExpression">editingRow</param>
<message>validator.tailleThon.uniqueKey</message>
</field-validator>
</field>
3.4 validateur requiredFile
Définition
<validator name="requiredFile"
class="jaxx.runtime.validator.field.RequiredFileFieldValidator"/>
3.5 validateur existingFile
Définition
<validator name="existingFile"
class="jaxx.runtime.validator.field.ExistingFileFieldValidator"/>
3.6 validateur notExistingFile
Définition
<validator name="notExistingFile"
class="jaxx.runtime.validator.field.NotExistingFileFieldValidator"/>
3.7 validateur existingDirectory
Définition
<validator name="existingDirectory"
class="jaxx.runtime.validator.field.ExistingDirectoryFieldValidator"/>
3.8 validateur notExistingDirectory
Définition
<validator name="notExistingDirectory"
class="jaxx.runtime.validator.field.NotExistingDirectoryFieldValidator"/>
4 Validateurs spécifiques d'ObServe
4.1 validateur openable
Définition
<validator name="openable"
class="fr.ird.observe.validation.OpenableFieldValidator"/>
Fonctionnement
Pour vérifier que la propriété de type Openable n'est pas ouverte.
Si la propriété est de type collection, on vérifie alors qu'aucun des éléments de la collection (qui est de type Openable) n'est ouvert.
On peut ajouter dans les message le paramètre openValueAsString qui est la valeur décorée de l'objet qui est ouvert.
Exemple
<field name="route">
<field-validator type="openable">
<message>validator.unclosed.route##${openValueAsString}</message>
</field-validator>
</field>