Andiamo a riprendere quindi la nostra classe EsempioForm in cui abbiamo definito le nostre proprietà, ovvero i campi del form. È qui infatti che effettuiamo l’override del metodo validate. Vediamo subito il codice dell’esempio che esamineremo:


public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
	 	

  ActionErrors errori = new ActionErrors();
  if (getNome() == null || getNome().length() < 1)
    errori.add("nome", new ActionMessage("error.nome.required"));
  
  return  errori;
}    
[/code]




Il metodo validate restituisce una collezione di errori grazie ad un oggetto ActionErrors, che contiene un elenco errori specificati da una collezione di messaggi (ActionMessages) o, come nel nostro caso, da coppie nome-messaggio (string, ActionMessage).
Nota: nelle versioni precedenti di Struts al posto di ActionMessage era utilizzata la classe ActionError (deprecata dalla versione 1.2), come si vede anche in questo articolo.
Come si vede, se non si verificano condizioni di errore, il metodo ritorna una collezione ActionErrors vuota, altrimenti provvede a popolarla.

Nel nostro caso il metodo validate effettua un controllo sul campo nome: se la stringa risulta vuota, aggiunge oggetti ActionMessage all'istanza ActionErrors. La stringa "error.nome.required" è la chiave dell'errore configurata nel resource bundle.
In seguito la view JSP può recuperare l'oggetto dalla richiesta ed utilizzare gli oggetti contenuti in ActionErrorsper mostrare messaggi di errore all'utente.

Nella view sfruttiamo come al solito il tag <bean:message>, indicando come chiave il nostro nuovo messaggio:
[code lang=xml]
<html:html>
<head><title>Inserisci il nome</title><html:base/></head>
<body>
Ciao, inserisci il tuo nome.<br/><br/>
<html:form action="/esempio" >
  Nome: <html:text property="nome" />
  <html:submit title="Invia" />
  <bean:message key="errors.nome.required" /><br />
</html:form>
</body>
</html:html>

Perché la view mostri correttamente il messaggio dobbiamo aggiungere, all'interno del nostro reference bundle, la voce per il nostro errore specifico:

errors.name.required=Campo nome obbligatorio