Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    51

    [J2EE/STRUTS] Validazione di una form con metodo validate

    Buongiorno a tutti. Sto costruendo una piccola applicazione con Struts 1.3. Nello specifico, sto implementando il metodo validate della classe ActionForm per la validazione formale dei parametri della richiesta:
    codice:
    package org.pluto;
    
    import javax.servlet.http.*;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionMessage;
    
    public class FormBean extends ActionForm{
    	
    	private String nome;
    	private String cognome;
    	
    	public String getNome(){
    		this.nome=nome;
    		return nome;
    		}
    	
    	public String getCognome(){
    		this.cognome=cognome;
    		return cognome;
    	}
    	public void setNome(String nome){
    		this.nome=nome;
    	}
    	public void setCognome(String cognome){
    		this.cognome=cognome;
    	}
    	    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request){
    	    	
    	    	ActionErrors errors=new ActionErrors();
    	    	
    	    	if ((nome==null) || (nome.length()<1 ));
    	    	errors.add("nome", new ActionMessage("errors.required"));
    	    	
    	        return errors;
    	       }
    }
    Sulla pagina jsp ho richiamato l'eventuale visualizzazione dell'errore tramite il TAG <html:errors/>, ed il parametro errors.required fà riferimento all' errore mappato sul file MessageResources di Struts. Il problema è che quando compilo la form lasciando il campo nome vuoto e spedendo la richiesta, non viene visualizzato nessun messaggio d'errore...Non credo d'aver capito bene come avviene la gestione dei msgs d'errore dal resource boundle. Qualcuno cosi gentile che mi aiuti?grazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    52
    Ma hai messo il nome del form nello struts config? Hai mappato correttamente l'action incluso il nome del form? Perchè se è mappato tutto correttamente dovrebbe essere una cosa automatica...Inoltre nello struts config hai impostato validate a true?

  3. #3
    io ho sempre aggiunto un errore cosi':

    codice:
    actionErrors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("errors.required"));
    La vita sarebbe piu' facile se avessi il codice sorgente!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    51
    il file struts-config è configurato bene, quello che non capisco è perchè non mi vengono validati i parametri nella ActionForm..Non ho ben capito la differenza tra ActionError ed ActionMessage. Il file MessageResource mappa gli errori, ma in che modo gli errori vengono associati ai messaggi?e soprattutto, dove specifico il messaggio da concatenare all'error?Nel MessageResource?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    52
    ActionErrors e ActionMessages più o meno fungono allo stesso modo. Devi fare come ha scritto zip2k sopra.

  6. #6
    ActionErrors e ActionMessages funzionano praticamente allo stesso modo.

    infatti ActionErrors estende ActionMessages, ma non va in override su nessun metodo, anzi utilizza i metodi della super classe.

    In ogni caso, quando fai un add, il messaggio che aggiungi, viene messo in una lista, e puttata in una mappa (messages) associata alla chiave ActionMessages.GLOBAL_MESSAGE ovvero (org.apache.struts.action.GLOBAL_MESSAGE).

    detto questo, penso, ma non ne sono sicuro quando fai un <html:errors />

    sicuramente il tag va a leggere la mappa messages, e di default utilizza come chiave:
    ActionMessages.GLOBAL_MESSAGE ovvero (org.apache.struts.action.GLOBAL_MESSAGE)

    Per quanto riguarda il messaggio che vuoi stampare a video, quando fai:

    new ActionMessage("errors.required"), quello che passi al costruttore e' la chiave che avrai precedentemente inserito in un bundle, se hai piu' di un bundle, puoi recuperare il messaggio dallo specifico bundle utilizzando:

    <html:errors bundle="tuo_resource" />

    spero di aver risolto ogni tuo dubbio.
    La vita sarebbe piu' facile se avessi il codice sorgente!

  7. #7
    mi sono dimenticato in pezzo...
    guardando il codice che hai postato, nello specifico:

    codice:
    ...
    errors.add("nome", new ActionMessage("errors.required"));
    ...
    secondo me puoi recuperare il messaggio cosi':

    <html:errors property="nome" bundle="tuo_resource" />

    La vita sarebbe piu' facile se avessi il codice sorgente!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    51
    Mille grazie zip2k, ti farò sapere....

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    51
    dunque, essendo un'autodidatta inesperta riesco a capire fino ad un certo punto. Dovrei dunque creare un resource bundle che contenga i messaggi da visualizzare, giusto?Come lo creo?Potresti postarmi un pò di codice?grazie ancora....

  10. #10
    ciao,
    nello struts-config.xml devi definire il bundle:

    codice:
    ...
    <message-resources parameter="ValidationErrors" null="false" key="ValidationErrors" />
    ...
    fatto questo, devi creare nella WEB-INF/classes/ crei il file ValidationErrors.properties,
    al suo interno definirai i messaggi da visualizzare:

    codice:
    ...
    errors.required=Tutti i campi sono obbligatori
    errors.name.required=Campo nome obbligatorio
    ...
    a questo punto se vengono soddisfatte le condizioni poste nell' if, aggiungedo l'errore:

    codice:
    ...
    if ((nome==null) || (nome.length()<1 ))
      errors.add("nome", new ActionMessage("errors.required"));
    ...
    nella jsp in corrispondenza del tag:

    codice:
    <html:errors bundle="ValidationErrors" />
    verraì stampato il messaggio: "Tutti i campi sono obbligatori"

    spero di essere stato chiaro, se dovessi avere altri problemi fammi sapere.

    La vita sarebbe piu' facile se avessi il codice sorgente!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.