Newsgroup: it.comp.java
Titolo: beans e jsp

C'è qualcosa che non ho capito sui tag jsp:getProperty o beans nelle jsp??
Visto che jsp:getProperty non funziona, mentre <%=allievo.geNome()%>
funziona...
<%@page import="corsi.database.*" %>
<html>
<body>
<%
String idAllievo = request.getParameter("idallievo");
AllieviBean allievo =
AllieviManager.getInstance().loadByPrimaryKey(Integer.valueOf(idAllievo));
%>
<jsp:getProperty name="allievo" property="nome"/>
</jsp:useBean>
</body>
</html>

 ha scritto nel messaggio
news:chq8it$53l$1...@lacerta.tiscalinet.it...

leggendo il codice java della servlet generata salta fuori che allievo non
viene messo nel contesto della pagina.
Quindi se aggiungo pageContext.setAttribute("allievo", allievo) tutto
funziona bene.
Si ma non mi va propriobene invece!
E' inutile usare i tag belli per fare le cose fatte bene e poi invece
trovarsi che se cambio il nome della variabile allievo devo cambiare anche
il parametro "allievo".

 il parametro "allievo".
Sinceramente non ho capito quale sarebbe ilt uo problema.
Nessuno ti obbliga a cambiare il parametro "allievo", basta che poi 
continui ad usare il nome "allievo" per accedere alla proprietą. Il 
problema secondo me e' che all'interno della pagina jsp accedi ad 
allievo in parte tramite la variabile e in parte tramite i getProperty.
Poi tieni conto che il codice java che hai utilizzato per inizializzare 
la variabile allievo non dovrebbe essere messo nella pagina jsp.
Andrea Polci

 Andrea Polci
E dove lo metto?

il bean ha senso se crei un *bean* cioč una classe che implementa
serializable e senza costruttore. Quindi la cosiddetta "business logic" la
metti lato server. Le jsp dovrebbero servire solo a fare la parte di
presentazione (view).
Poi nella pagina ti metti l'oggetto in sessione, e lo richiami come se fosse
un bean normale.

 ha scritto nel messaggio
news:chs0e5$l5o$1...@fata.cs.interbusiness.it...

ma a me serve solo nella pagina.
Ok  che le jsp dovrebbero servire per la presentazione ma adessso non si
dovrebbe fare neppure
Allievo allievo = loadAllievo(1)
ad esempio?
Come ho detto allievo mi serve solo nella pagina, quindi non lo metterň
nella sessione.
Alternative possono essere secondo me
1)usare una servlet intermedia per metterci l'oggetto Allievo
2)usare i tag personalizzati
Vorrei escludere la seconda perchč troppo onerosa per il progetto che devo
fare.
La prima mi sembra inefficiente.
Quindi non mi rimane che inserire uno piccolo script nella pagina
jsp...almeno cosě credo...
E poi se volessi usare la servlet intermedia che mi setta allievo nel
contesto della pagina...dovrei avere una servlet per ogni pagina jsp quasi,
giusto?
Ditemi cosa ne pensate..

> Ditemi cosa ne pensate..
Molto dipende da quale e' l'obiettivo
-) vuoi capire ?
-) vuoi risolvere ?
-) vuoi chiudere ?
-) vuoi valutare ?
-) vuoi semplificare ?
-) vuoi migliorare ?
-) vuoi guadagnare ?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


capire, migilorare, risolvere...
No dai alla fine sto valutando l'utilizzo di una servlet intermedia che
raccoglie tutte le richieste delle jsp, setta gli oggetti con
request.setAttribute(..), e fa il forward allla jsp.
Sono 2 i problemi:
1)il forward chiama *.jsp di nuovo e quindi si finisce in ricorsione
infinita.
2) le prestazioni, dal momento che ho 2 servlet interrogate per ogni
richiesta (servlet intermedia + servlet della jsp).
Siccome immagino che sia un modello gią ampiamente utilizzato, immagino che
alcuni di voi conoscano anche la soluzione, vero? spero almeno..


 alcuni di voi conoscano anche la soluzione, vero? spero almeno..
La soluizione si chiama STRUTS,
sito jakarta,
e' esattamente quello che vuoi
la servlet si chiama ActionServlet, mi pare o simile
Se lo usi solo cosi' ci metti 2 ore a imparare a usarlo
(salta tutti i tag e i fronzoli)
         cya Nicola


 alcuni di voi conoscano anche la soluzione, vero? spero almeno..
...ritengo che tu stia costruendo un palazzo senza le fondamenta.
Se devi fare una cosa alla "carissimo amico" (non mi fraintendere senza
nulla di offensivo, ci sono siti interi fatti così..)ti conviene mettere
tutto nella pagina jsp e passare i dati da una pagina all'altra con la
request.
Altrimenti ti conviene guardare un pò il concetto MVC.

 jsp...almeno così credo...
Quindi stai scegliendo un modo di lavorare poco pulito per semplicita', 
poi non puoi lamentarti se il risultato e' poco pulito (cioe' ti tocca 
ricordarti di cambiare anche "allievo").
Non sto dicendo che la tua scelta e' sbagliata. Quando il problema e' 
semplice e' inutile complicarlo per cercare di seguire il modello MVC, 
ad esempio. Ma il problema deve essere tanto semplice che non hai 
problemi a gestire la soluzione poco pulita.
Andrea

 ricordarti di cambiare anche "allievo").
A proposti come trovi il modo di procedere che penso di adottare:
in ogni jsp all'inizio circa metto una direttiva %@include file="file.txt"%>
dove su file.txt c'è il codice jsp per caricare i bean in base ai parametri
che trova su request.
Mi sembra un via di mezzo tra l'utililizzo di una ServeletAction (come si è
stato suggerito), e una jsp con codice dentro.
Non ho molto tempo quindi non mi posso studiare STRUTS, cosa che cmq farò
credo, tuttavia vorrei fare una cosa decente (si tratta di un progettino
universitario..).

 universitario..).
Non sono fra gli estimatori di STRUTS (forse solo perché non è di molta 
utilità con il tipo di applicazioni che sviluppo).
Fossi in te adotterei la soluzione servlet + jsp. Non è affatto 
complicata. Dai anche un'occhiata ai "filters" 
(
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/Servlets8.html#wp64572
).
Andrea