Invest in people before investing in tools

Il blog di Matteo Baglini
posts - 118, comments - 95, trackbacks - 697

[Spring.NET #24] Spring.Core, Validators e Validator Groups

La validazione di un'oggetto avviene grazie alla definizione di un insieme di regole. In Spring.NET la singola regola si chiama Validator e l'insieme di regole si chiama Validator Groups. Come è facile immaginare esistono già built-in diversi tipi di Validators e di Validator Groups adatti ai più disparati scenari di validazione però se in certi casi non sono adatti ai nostri bisogni possiamo sempre crearne di nostri implementando l'interfaccia IValidator oppure la classe base BaseValidator. Analiziamo i Validators cominciando dal più semplice, il Required Validator, il quale verifica che un determinato campo sia valorizzato:

<v:required id="PersonFirstNameValidator" test="FirstName" />

procediamo con il Condition Validator, il quale permette di esprimere la validazione tramite un espressione logica utilizzando il linguaggio SpEl,

<v:condition id="PersonDateOfBirthValidator" test="DateOfBirth != DateTime.MinValue" />

poi abbiamo il Regular Expression Validator, il quale permette di validare una stringa con una RegEx, molto utile qunado dobbiamo validare un formato ben definito, come un indirizzo email:

<v:regex id="PersonFirstNameContentValidator" test="FirstName" >
  <v:property name="Expression" value="[A-Za-z]*" />
</v:regex>

in fine abbiamo il Generic Validator, il quale permette di applicare un proprio validator creato implementando l'interfaccia o la classe indicate precedetenmente:

<v:validator id="MyId" typr="MyNamespace.MyCustomValidator, MyAssembly" />

Come spiegato inizialmente possiamo raggruppare i Validators e possiamo farlo in tre modalità logiche, mettendoli in AND utilizzando il Group:

<v:group id="AddressInfoValidator">
  <v:required id="CityValidator" test="AddressInfo.City" when="AddressInfo.Address!=String.Empty" />
  <v:required id="CapValidator" test="AddressInfo.PostalCode" when="AddressInfo.Address!=String.Empty" />
</v:group>

oppure mettendoli in OR utilizzando Any:

<v:any id="AddressInfoValidator">
  <v:required id="CityValidator" test="AddressInfo.City" when="AddressInfo.Address!=String.Empty" />
  <v:required id="CapValidator" test="AddressInfo.PostalCode" when="AddressInfo.Address!=String.Empty" />
</v:any>

ed in fine mettendoli in XOR utilizzando Exclusive:

<v:exclusive id="AddressInfoValidator">
  <v:required id="CityValidator" test="AddressInfo.City" when="AddressInfo.Address!=String.Empty" />
  <v:required id="CapValidator" test="AddressInfo.PostalCode" when="AddressInfo.Address!=String.Empty" />
</v:exclusive>

In fine ricordo che per ogni Validators o Validator Groups possiamo definire una condizione di esecuzione impostando il tag when:

<v:required id="CityValidator" test="AddressInfo.City" when="AddressInfo.Address!=String.Empty" />
Technorati Tag:

Print | posted on sabato 15 dicembre 2007 18:22 | Filed Under [ .NET OpenSource Spring.NET ]

Powered by:
Powered By Subtext Powered By ASP.NET