Newsgroup: it.comp.java
Titolo: [Struts] Validazione dei campi

Buongiorno a tutti,
Ho dei dubbi sull'uso della validazione dei fati con struts.
Ho le seguenti azioni configurate:
<action input="/tirocini/edit_tirocinio.jsp" name="TirocinioForm" 
path="/editTirocinio" scope="request" 
type="tirocini.actions.tirocini.EditTirociniAction" validate="false"/>
che carica i dati di un tirocinio e riempie i campi del form contenuto 
in edit_tirocinio.jsp
<action input="/tirocini/edit_tirocinio.jsp" name="TirocinioForm" 
path="/updateTirocinio" scope="request" 
type="tirocini.actions.tirocini.UpdateTirociniAction" validate="true">
prende i dati dalla pagina jsp li valida e li salva.
Nel caso la validazione fallisca, quest'ultima azione mi ricarica la 
pagina jsp.
Ottengo perņ dei nullpointerexception in quanto la pagina non trova 
degli oggetti che la action dovrebbe passare nella request.
Ho provato a cambiare l'ultima azione con questa:
<action input="/editTirocinio.do" name="TirocinioForm" 
path="/updateTirocinio" scope="request" 
type="tirocini.actions.tirocini.UpdateTirociniAction" validate="true">
ma ottengo solo una pagina bianca

 Buongiorno a tutti,
[SNIP]
Ciao,
	per poterti dare una risposta, avrei bisogno di informazioni, tipo il 
NullPointerExcpetion ti arriva dal fatto che non trova l'ActionForm 
associato? Stai usando Struts 1.1 e Validator o Struts 1.0?
Possiamo vedere lo stack degli errori e l'action Form?
	Fammi sapere e magari posso essere pių esauriente.

     Fammi sapere e magari posso essere più esauriente.
Sto usando Struts 1.0 ( non validator). Il nullpointer non deriva dal 
fatto che non trova la actionform  quanto dal fatto che, in presenza di 
un errore di validazione nel metodo validate, struts ricarica la pagina 
jsp senza passare per la action che carica da DB i bean da passare alla 
jsp. Le eccezioni derivano dal fatto che la jsp cerca nello scope 
request degli arraylist che non sono stati caricati perchè in presenza 
dell'errore di validazione struts richiama la pagina jsp e non passa per 
  la action editTirocinio.do
lo stack degli errori è il seguente:
java.lang.NullPointerException
	at 
org.apache.jsp.edit_0005ftirocinio$jsp._jspService(edit_0005ftirocinio$jsp.java:251)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at 
org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
Come posso fare per far caricare tali bean alla jsp? devo per forza 
metterli in sessione e non in request? devo richiamare esplicitamente la 
action che popola i bean?

JackTorrence ha scritto:

	Il controllo che fai sul metodo validate è sui campi del form o esegui 
dei controlli che prevedono l'accesso alla base di dati?
 
	La domanda può sembrarti un po' strana, ma per risolvere il tuo 
problema mi viene in mente una soluzione semplice: spostare il controllo 
che blocca il flusso dal validate dell'action form all execute 
dell'azione successiva.
	Il gioco si ottiene creando gli actionerror nell'azione e non nel 
validate, richiamare nell'azione il metodo saveErrors legato alla 
request (se non ricordo male) e utilizzare actionForward.findInput per 
tornare alla pagina iniziale. In questo modo nell'action puoi re - 
inserire l'action form nella request e tutti gli array list che ti sono 
necessari.
	L'altra soluzione, come tu stesso hai anticipato, è utilizzare la sessione.



Ok grazie. Immaginavo si potessero creare gli actionerror nel metodo 
execute ma non avevo capito come inviarli alla jsp.
Grazie mille ;)