Esiste una funzione nascosta nell'ajax.net che si occupa della validazione dei parametri: Function._validateParams. Inizialmente questa funzione esisteva solo in debug, mentre in release veniva usata la versione compressa: per noi programmatori era inutilizzabile. Tuttavia nella versione rilasciata del framework hanno cambiato idea lasciando la definizione.
Dato che il nome di questa funzione inizia con "_" dovremmo considerarla privata o interna alla classe Function: ma dato che trovo questa funzione molto utile ho deciso di ignorare bellamente la questione e di farne uso.
In sostanza cosa consente di fare? Di validare facilmente i parametri di una funzione. Attraverso un array di oggetti e la lista dei parametri verifica il tipo, il numero e altre informazioni. Se c'è una differenza fra quanto richiediamo e quello che viene passato lancia un'eccezione.
1: function onlyString(str)
2: {
3: //Parameter validation
4: var e = Function._validateParams(arguments,
5: [{name: "str", type: String, elementMayBeNull: false,optional:false}]);
6: if (e) {throw e;} //On Parameter error throw an exception
7:
8: //Main code
9: alert(str);
10: }
Come possiamo facilmente capire onlyString è una funzione fondamentale per la nostra webApplication. Ci sono due parametri da passare: arguments e l'Array di configurazione. Questo contiene oggetti che spiegano alla funzione come deve controllare ogni parametro. E' importante inserire un oggetto di configurazione per ogni parametro altrimenti avremo un'eccezione che ci avverte che il numero di parametri è sbagliato. Per comodità possiamo creare l'Array delle configurazioni inline tramite JSON.
Vogliamo essere sicuri che il parametro str sia una stringa, non sia null e che venga passato:
1: [{name: "str", type: String, elementMayBeNull: false,optional:false}]
Ma cosa possiamo settare nel singolo oggetto di configurazione? Ci viene in aiuto Jay Kimble con un suo post di Aprile '07 su CodeBetter:
- type - (Type) Indica di che tipo deve essere il parametro (Alcuni esempi: Array, Function, String, Sys.Component, ma soprattuto le nostre classi)
- mayBeNull -(boolean) Se il parametro accetta null come valore
- integer - (boolean) indica che il parametro deve essere un intero
- domElement - (boolean) Il parametro deve essere un elemento del DOM (div, table, span, ...)
- optional - (boolean) Indica se il parametro è opzionale e quindi può essere omesso.
- elementType - (Type) - se type è 'Array': Indica il tipo di dato accettato nell'array.
- elementInteger - (boolean) se type è 'Array' si assicura che sia un Array di interi
- elementDomElement - (boolean) se type è 'Array' si assicura che sia un Array di elementi del dom
- elementMayBeNull -(boolean) se type è 'Array' valuta se gli elementi dell'Array possono essere null.
Qui trovate due link che possono aiutarvi ad approfondire:
posted @ mercoledì 28 maggio 2008 04:04