PDA

View Full Version : Problema con Struts 1.2.2


GioFX
13-10-2004, 19:10
Non riesco a recuperare oggetti dalla request, ad esempio, all'interno di una pagina jsp:

String id = (String)request.getAttribute("USER.ID");

dovrebbe recuperare l'oggetto USER.ID e convertirlo da Object in stringa... ma facendo il debug appare nullo.

E' strano, perchè il token lo è presente...

Non dovrebbe essere Struts il problema, dato che non è coinvolto in questa operazione.

Consigli?

kingv
14-10-2004, 08:58
non conosco struts ma sei sicuro di voler chiamare requesty.getAttribute() e non request.getParameter()?

in caso affermativo è l'engine struts che ti valorizza quell'attributo?

GioFX
14-10-2004, 09:58
Originariamente inviato da kingv
non conosco struts ma sei sicuro di voler chiamare requesty.getAttribute() e non request.getParameter()?


si, in questo caso potevo usare anche getParameter (dato che USER.ID è un stringa, ma di solito uso getAttribute perchè devo estrarre oggetti generici (non solo di tipo String), tipo i bean.


in caso affermativo è l'engine struts che ti valorizza quell'attributo?

Non credo, è la servlet... sfrutto semplicemente gli oggetti impliciti request (e session) della JSP e da loro estraggo oggetti Java tramite il metodo predefinito delle relative interfacce/classi (ServletRequest e HTTPSession).

GioFX
14-10-2004, 10:00
Quando nella Action di Struts salvo un oggetto nella request...

request.getSession().setAttribute("USER.ID", user.getID());

devo poterli recuperare nelle JSP tramite il metodo su riportato sfruttando l'oggetto implicito nella JSP (request).

kingv
14-10-2004, 10:38
Originariamente inviato da GioFX
si, in questo caso potevo usare anche getParameter (dato che USER.ID è un stringa, ma di solito uso getAttribute perchè devo estrarre oggetti generici (non solo di tipo String), tipo i bean.



occhio che getAttribute e getParameter non si differenziano solo per il tipo di oggetto ritornato.
getAttribute recupera dalla sessione un oggetto, valorizzato da te o dal web container mentre getParameter tira fuori un valore da una form html (o dall'url se i parametri sono passati in una GET)

GioFX
14-10-2004, 11:18
Originariamente inviato da kingv
occhio che getAttribute e getParameter non si differenziano solo per il tipo di oggetto ritornato.
getAttribute recupera dalla sessione un oggetto, valorizzato da te o dal web container mentre getParameter tira fuori un valore da una form html (o dall'url se i parametri sono passati in una GET)

Hai ragione, ma gli oggetti sono sempre passati con la request, dal Javadoc di ServletRequest:


Returns the value of a request parameter as a <code>String</code>, or <code>null</code> if the parameter does not exist. Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data.


Il problema è che è assurdo che non funzioni... all'interno della action di struts (servlet) nel metodo che in caso di successo valorizza il forward alla pagina jsp relativa viene immesso nella request l'oggetto e infatti è presente se si prova ad estrarlo... ma sulla JSP (dove dovrebbe "arrivar") non esiste più, e infatti il jasper da errore nel digest della JSP:

Servlet.service() for servlet debugjsp threw exception

org.apache.jasper.JasperException

GioFX
14-10-2004, 14:55
chiedo umilmente scusa... errore idiota mio...

per forza era nullo, lo salvavo nella session!

request.getSession().setAttribute(), invece di

request.setAttribute()

!

:O