Newsgroup: it.comp.java
Titolo: Jsp include con parametro da request

Salve a tutti.
ho un problema.
Ho un front controller che riceve le richieste e appende nell'attributo
page della request l'url della pagina da visitare.Poi fa il forvard
verso il main.jsp (cosa semplice semplice).
nel main jsp, vorrei includere la pagina che l'utente ha richiesto. ho
provato con:
<jsp:include page="<%= request.getAttribute("page"); %> "
flush="true"/>
ma mi da errore dicendo che non è termintao %>. com'è la sintassi
esatta?
altro dubbio, il <%@ include, serve per includere pagine statiche? se
lo faccio con una jsp questa non viene interpretata?
ciao

per spiegarmi meglio, la mia idea era di avere una jsp quasi statica
(cioè la grafica del sito) e in mezzo cambiare man mano secondo la
richiesta la pagina jsp centrale. chiaro?

 lo faccio con una jsp questa non viene interpretata?
La direttiva include <%@ include file="fileName"%>
permette di includere direttamente codice JSP, intendendo con
questo che il codice incluso viene valutato come se fosse parte
integrante della pagina principale: in pratica prima viene fatta
l'inclusione e poi viene compilata la pagina JSP.
Il tag include <jsp:include page="fileName" flush="true|false"/>
permette invece di includere in una pagina JSP un'ulteriore
pagina JSP che viene valutata a parte: in pratica il codice della
pagina principale e quello della pagina inclusa vengono compilati
separatamente (ed in ordine di "comparizione") e poi i due codici
HTML risultanti vengono adeguatamente fusi assieme.
Questo implica, per esempio, che nel primo caso il codice
della pagina inclusa è come se fosse materialmente inserito nella
pagina principale, mentre nel secondo caso nella pagina inclusa
bisogna nuovamente dichiarare tutti gli import ed i beans utilizzati.
Oltre a questa sostanziale differenza altre cose da ricordare sono:
- la direttiva include, a differenza del tag, non è parametrica: cioè
  quello che volevi far tu lo puoi fare solo con il tag include;
- la direttiva include, a differenza dell'omonimo tag, almeno una
  volta sul vecchio tomcat ignorava il reload della pagina inclusa.
-- 
lpb
"I'm a poor lonesome cowboy, and a long, long way from home..."

 > lo faccio con una jsp questa non viene interpretata?La direttiva include <%@ include file="fileName"%>


 l'include in pratica è statico.
Ehmm, forse mi son dilungato e ti è sfuggito:
<jsp:include page="<%= request.getAttribute("page") %>" flush="true"/>
funziona perfettamente.
Nota l'assenza del punto e virgola.


 > l'include in pratica è statico.Ehmm, forse mi son dilungato e ti è sfuggito:


> io devo usare un [bla, bla, bla]
Bene.
E cos'è che non ti riesce?


che l'include non funziona.
mi visualizza una pagina bianca. e non la grafica esatta del sito con
all'interno una pagina.
da quello che ho capito la jsp crea un servlet al primo avvio, e poi
non cambia. a rigor di logica dovrebbe funzionare, invece nn va nulla..


 non cambia. a rigor di logica dovrebbe funzionare, invece nn va nulla..
L'include, di per se, funziona (l'han fatto apposta!), per cui vai
tranquilllo,
almeno di questo puoi essere sicuro (ho usato lo stesso metodo molte
volte senza problemi).
Per risolvere il tuo problema fai un po' di debug:
- la pagina main.jsp *senza* include funziona correttamente?
- il valore dell'attributo page viene passato correttamente?
- ci sono cambi di cartella fra un file e l'altro? (potrebbero creare
  problemi se non li gestisci correttamente)
- l'include con il file da includere impostato a mano funziona?
- il file da includere chiamato autonomamente funziona o da errore?
  (puoi verificarlo anche settando flush a false)
Prima o poi vedrai che risolvi l'inghippo.
Ah, un'altra cosa, ho verificato che devi castare a String il
getAttribute (io ho sempre usato il getParameter) perchè sembra
che venga sparato direttamente al metodo della servlet e non
prima convertito in stringa come uno si aspetterebbe; cmq te
ne avverte il compilatore...


 > non cambia. a rigor di logica dovrebbe funzionare, invece nn va nulla..L'include, di per se, funziona (l'han fatto apposta!), per cui vai
