Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Metodo validate e ActionErrors

Gestire condizioni di errore e messaggi agendo direttamente sull'ActionForm
Gestire condizioni di errore e messaggi agendo direttamente sull'ActionForm
Link copiato negli appunti

Un altro metodo per la validazione dei dati di un form prevede l'implementazione del metodo validate() nell'ActionForm. In questo caso, quindi, lasciamo da parte DynaActionForm e DynaValidationForm e torniamo a definire le proprietà del form con la classe ActionForm.

Come negli altri casi, perché il metodo venga invocato dal RequestProcessor è necessario che, nella descrizione dell'ActionForm all'interno del file di configurazione, l'attributo validate sia impostato a true.

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;
}

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:

<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

Ti consigliamo anche