
guide
Tutti i linguaggi per diventare uno sviluppatore di app per Android.
In questo articolo vediamo come utilizzare il plugin di Validation che il framework Struts mette a disposizione
Il plugin, messo a disposizione da Struts, ci consente di validare (o meno) dei campi presenti in un form; per esempio il campo “numero telefonico”.
Anzichè scrivere la validazione, del seguente campo, nelle classi Action, creiamo un meccanismo di validazione generale per il nostro campo “numero telefonico”.
Iniziamo subito con un piccolo esempio per capire al meglio la gestione della validazione. Creiamo un semplice form, con un campo editabile (una textArea), dove l’utente digiterà il proprio nome, che dovrebbe essere lungo minimo 5 caratteri.
Andiamo a costruirci la nostra classe ActionForm:
import org.apache.struts.action.*;
/* Acquisisce le variabili del form */
public class NomeForm extends ActionForm {
public String nome; // i relativi metodi get e set della property nome
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Creiamo dunque la action corrispondente:
import org.apache.struts.action.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class NomeAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
NomeForm nomeForm = (NomeForm) form;
// stampa per un controllo il contenuto
// della property "nome" (il valore inserito dall'utente)
System.out.println(NomeForm.getNome());
return mapping.findForward("success");
}
}
Creaimo la nostra pagina JSP (la view ‘success’):
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<html>
<body>
<html:errors />
<html:form action="inputSubmit">
<bean:message key="nomeForm.nome" />
<html:text property="nome" /><br/>
<html:submit value="ok" />
</html:form>
</body>
</html>
Ora aggiungiamo la dichiarazione del bean al file struts-config.xml
<form-bean type="fulvios.InputForm" name="inputForm" />
Per finire definiamo l’action mapping nel file struts-config.xml
<action path="/inputSubmit" type="fulvios.InputAction"
name="inputForm" scope="request"
validate="true" input="/input.jsp">
<forward name="success" path="/success.jsp" />
</action>
è possibile effettuare due validazioni distinte sullo stesso campo. Per esempio, se vogliamo che il campo nome
abbia minimo 5 caratteri e massimo 10. Ecco di seguito il seguente codice da scrivere nel file validation.xml
:
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<form-validation>
<formset>
<form name="nomeForm">
<field property="nome" depends="minlength,maxlength">
<!-- definisco una sequenza di validazioni.
la prima sarà lalunghezza minima e se ha buon esito
effettuo la lunghezza massima -->
<arg0 key="nomeForm.nome" />
<arg1 key="${var:minlength}" name="minlength" resource="false" />
<arg1 key="${var:maxlength}" name="maxlength" resource="false" />
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
<!-- imposto il numero di caratteri che minimo deve avere -->
</var>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
<!-- imposto il numero di caratteri che massimo deve avere -->
</var>
</field>
</form>
</formset>
</form-validation>
Impostazione del messaggio di errore nel file di risorse:
#andiamo a specificare il messaggio relativo al maxlength errors.maxlength={0} non può essere più di {1} caratteri.
Supponiamo di volere che il nome inizi con una lettera e contenga solo lettere, numeri e underscore. Per effettuare tale codifica si utilizza il metodo Mask.
Ecco di seguito un esempio:
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<form-validation>
<formset>
<form name="nomeForm">
<field property="nome" depends="mask">
<msg name="mask" key="nomeForm.nome.mask" />
<var>
<var-name>mask</var-name>
<!-- La sintassi è quella delle espressioni regolari -->
<var-value>^[a-zA-Z]{1}[a-zA-Z0-9_]*$</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
In questo articolo abbiamo introdotto un potente strumento per la validazione dei campi che il FrameWork Struts mette a disposizione. Inoltre è possibile costruire delle validazioni personalizzate.
Aggiungiamo il plugin Validator al file di configurazione di Struts (struts-config.xml), responsabile della lettura dei file di configurazione delle regole di validazione:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml" />
</plug-in>
Copiamo i due file XML, validation-rules.xml
e validator.xml
, nella cartella WEB-INF
.
Il file validator.xml permette l’impostazione del mapping tra le property dell’ActionForm alle regole e qualunque messaggio di errore per le seguenti regole.
Inoltre è neccessario che la classe NomeForm
(il nostro form) estenda la org.apache.struts.validator.ValidatorForm
. La classe ValidatorForm effettua un override del metodo validate
dell’ActionForm e comunica con il Framework di validare o meno i campi di questo form.
import org.apache.struts.validator.ValidatorForm;
/* definizione del nostro ValidatorForm */
public class NomeForm extends ValidatorForm {
public String nome;
public String getNome() { return nome; }
public void setNome(String nome) { this.nome = nome; }
}
Ora impostiamo le nostre regole di validazione per il campo “nome” nel validation.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<form-validation>
<formset>
<form name="nomeForm">
<!-- definiamo il nome del Form -->
<field property="nome" <!-- definiamo la property dove andare a effettuare la validazione --> depends="minlength">
<!-- dichiariamo il metodo per la nostra validazione -->
<arg0 key="nomeForm.nome" />
<!-- arg ci servirà per il messaggio di errore -->
<arg1 key="${var:minlength}" <!-- definiamo arg1 come minlenght --> name="minlength" resource="false" />
<var>
<var-name>minlength</var-name>
<!-- dichiariamo che la lunghezza minima deve essere di 5 caratteri -->
<var-value>5</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
Fatto questo andiamo nel file delle risorse (ApplicationResources.properties
) e impostiamo il relativo messaggio di errore:
#il seguente file gia contiene di default tutti i messaggi di errore relativi ai metodi di validazione
#che Struts mette a disposizione. errors.minlength={0} non può essere meno di {1} caratteri.
#{0} fa riferimento ad arg0 mentre {1} ad arg1
Nota: I tag arg0
, arg1
, sono deprecati e sono stati sostituiti, nelle edizioni più recenti di Struts 1.x, dal semplice tag <arg>
. Le posizioni sono indicate dall’attributo position (es. <arg0 />
diventa <arg position="0" />
Il metodo minlength
usato nel nel validation.xml è un metodo standard messo a disposizione dal plugin di validazione ed è definito nel file validator-rules.xml
.
Oltre a questo metodo il plugin definisce i seguenti metodi di validazione:
Se vuoi aggiornamenti su Validation di Struts inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
Photoshop CS5 offre numerosi strumenti per eliminare dalle foto elementi o persone non desiderato. Per le operazioni più semplici è […]
Tutti i linguaggi per diventare uno sviluppatore di app per Android.
Come creare applicazioni per il Web con PHP e MySQL per il DBMS.
Tutte le principali tecnologie per diventare uno sviluppatore mobile per iOS.
I fondamentali per lo sviluppo di applicazioni multi piattaforma con Java.
Diventare degli esperti in tema di sicurezza delle applicazioni Java.
Usare Raspberry Pi e Arduino per avvicinarsi al mondo dei Maker e dell’IoT.
Le principali guide di HTML.it per diventare un esperto dei database NoSQL.
Ecco come i professionisti creano applicazioni per il Cloud con PHP.
Lo sviluppo professionale di applicazioni in PHP alla portata di tutti.
Come sviluppare applicazioni Web dinamiche con PHP e JavaScript.
Fare gli e-commerce developer con Magento, Prestashop e WooCommerce.
Realizzare applicazioni per il Web utilizzando i framework PHP.
Creare applicazioni PHP e gestire l’ambiente di sviluppo come un pro.
Percorso base per avvicinarsi al web design con un occhio al mobile.
Realizzare siti Web e Web application con WordPress a livello professionale.
Come creare database e collection, inserire, estrarre, aggiornare e rimuovere dati da una base di dati MongoDB con Python
Impariamo ad utilizzare Takamaka, una blockchain Java Full Stack, per scrivere codice Java installabile ed eseguibile su una blockchain
Inserire contenuti di diversa origine in una stessa pagina
Guida a Red Hat Quarkus, uno stack Java Kubernetes nativo pensato per applicazioni serverless e per la realizzazione di microservizi rapidi ed ottimizzati. Una piattaforma concepita per accedere in ambiente Cloud mettendo a disposizione un framework orientato ai microservizi, come ad esempio Spring Boot o Micronaut