Newsgroup: it.comp.java
Titolo: aiuto servlet-jsp

Ciao,
volevo chiedervi un aiuto, penso sia il posto + adatto.
Sto facendo un pò di pratica con jsp-servlet....ho una servlet che si
interfaccia su un DB e mi restituisce dei risultati a forma di JavaDataBean,
ora vorrei però in una pagina jsp fare una sorta di:
Bean b = request.getAttribute("nome").getNome();
ho provato tramite scriptlet <% ... %> ma il problema che la classe Bean è
come se non me la trovasse, ho provato con la direttiva<@ page
import="Bean"> ma niente da fare...La classe Bean.class e Bean.java le ho
messe entrambe per prova nella stessa dir delle pagine jsp e anche nella
directory work di tomcat (dove vengono convertite le jsp in servlet)
premetto che ho fatto il passaggio tra servlet-jsp con
req.setAttribute("museo", museo);
RequestDispatcher rd = req.getRequestDispatcher(paginaJSP);
rd.forward(req, res);
PS: Utilizzo Tomcat come web-server
Grazie a chi mi vuole aiutare!
Jerry

 come se non me la trovasse,....
Forse ti manca qualcosa del genere:
<jsp:useBean id="beanId" class="beanClass" scope="request">
 .........................
</jsp:useBean>
Saluti

 Bean b = request.getAttribute("nome").getNome();
getAttribute(...) ritorna un riferimento ad un oggetto della classe 
Object che non ha un metodo getNome(). Prima di invocare il metodo devi 
fare un cast del tipo:
Bean b = ((MiaClasse)request.getAttribute("nome")).getNome();
Andrea Polci

 Bean b = ((MiaClasse)request.getAttribute("nome")).getNome();
E' una cosa che ho pensato e provato dall'inizio, però il prob sembra che
non trovi la classe mi dice can't resolve symbol class: Bean.class
Io l'ho messa nella dir work dove vengono create le servlet e anche nella
dir dove c'è la vera jsp ma niente!
Jerry

 directory work di tomcat (dove vengono convertite le jsp in servlet)
Intanto non devi mettere i file *.class nella stessa directory delle jsp,
bensě in /WEB-INF/classes/<nome-package> (WEB-INF si trova dentro la
directory dove hai messo le jsp).
Poi l'import nella singola jsp fallo cosě:
<%@ page import="<nome-package>.*" %>
Dove il nome package č il nome del package della classe Bean
Ciao


Hai messo la classe in un package e l'hai specificato?
La classe deve essere in WEB-INF/classes/<package>/Bean.class
Nella jsp devi indicare anche il package o utilizzare l'import.
Non so se sia possibile, da una jsp, utilizzare classi che non siano 
inserite all'interno di un package.
Andrea Polci

 dir dove c'è la vera jsp ma niente!
prova a metterla in
/home_della_tua_web_application/WEB-INF/classes/
Popix.

Ok...intanto grazie per l'aiuto!
Mi sto avvicinando a cio che voglio visto che con un useBean, setProperty e
getProperty ho associato al bean i parametri, solo che come vi ho spiegato
vorrei prelevare l'oggetto bean già fatto che è un resultSet che mi viene
passato dalla servlet appunto e lo vorrei stampare nella jsp.
La soluzione + vicina sembra essere quella di Andrea Polci solo che non mi
riesce a fare il cast (con usebean sembra abbia visto la classe questa, ma
come dicevo usebean mi permette di vedere solo i parametri)
Grazie ancora per i vostri aiuti.
jerry

In definitiva ho visto che provando queste tre righe (l'ho fatto per esteso
per vedere gli errori)
Miaclasse a = new Miaclasse();
a = (Miaclasse)request.getAttribute("nome");
a.getNome();
L'errore ricade proprio nella seconda riga con un classcastexception in
pratica non riesce a convertirmi l'object della request in un'istanza
miaclasse...Boh non saprei perchè adesso la classe la vede di sicuro ma non
riesce a fare il cast!
Jerry

Jerry wrote:

Evidentemente perche' l'oggetto ritornato da 
request.getAttribute("nome") non e' un'istanza di MiaClasse.
Scrivi le righe di codice in cui hai inserito l'attributo "nome" nella 
request?
Mi chiedo poi perche' crei un'istanza di MiaClasse nella prima riga se 
subito dopo la butti via assegnando ad a un altro valore?
Non era forse meglio la riga seguente?
MiaClasse a = null;

 MiaClasse a = null;
Hai ragione, all'inizio facevo MiaCalsse a =
(MiaClasse)request.getAttribute("nome"); ma per verificare se trovava la
classe MiaClasse ho voluto creare un'istanza di quella classe...non mi
interessa se poi va buttata via...solo per un test poi sistemerò.

 else (prova instanceof Object) out.write("Sono un Object!!");
No...ho detto una bella e grossa cavolata...cmq il problema persiste.