Posts Tagged ‘validazione campi’
29
apr

Torniamo ancora sull’argomento Validator di Struts. Purtroppo quello dei numeri e delle date è un campo nel quale la validazione trova molti ostacoli a causa delle diverse convenzioni internazionali. Per poter validare un numero come un buon italiano lo scriverebbe occorre dunque ricorrere a qualche stratagemma e di certo le Espressioni Regolari possono venirci incontro. Per essere più precisi vogliamo validare un qualunque numero nella forma nnn.nnn.nnn,nn come ad esempio 1.230,54. Possiamo dunque usare una espressione regolare come questa:

^[0-9]*[.,]?[0-9]+$

…ed integrarla nel file validation.xml di Struts in questo modo:

<field depends="mask" indexedListProperty="rows" property="speseViaggio">
<arg0 key="label.speseViaggio"/>
<var><var-name>mask</var-name><var-value>^[0-9]*[.,]?[0-9]+$</var-value></var>
</field>

, , ,

27
apr

Chiunque abbia mai utilizzato Struts ed il suo Validator conosce di certo la potenza di tale mezzo. Mi sono trovato, però, a dover affrontare un problema poco documentato: la validazione dei campi indicizzati (indexed=”true”) di una form, in particolare nel momento in cui ogni riga della form è rappresentata da un proprio bean. La soluzione passa comunque per un paio di accorgimenti e l’indicazione di un attributo. Se ad esempio abbiamo una form rappresentata in questo modo:

<form-bean name="DoProductionProcessForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="cliente" type="java.lang.String"/>
<form-property name="riferimento" type="java.lang.String"/>
<form-property name="righe" type="it.test.controller.form.ProcessRow[]"/>
</form-bean>

La validazione di un campo di ProcessRow (rappresentato dai metodi get/set) come dataInizio potrebbe essere la seguente:

<field depends="required,date" indexedListProperty="righe"  property="dataInizio">
<arg0 key="label.dataInizio"/>
<var><var-name>datePatternStrict</var-name><var-value>dd/MM/yyyy HH:mm:ss</var-value></var>
</field>

, ,