2010-03-12 6 views

risposta

17

In Plain Old JSP

<script> 
    var someText = "<%= myBean.getText() %>"; 
</script> 

Utilizzando EL (Expression Language)

<script> 
    var someText = "${myBean.text}"; 
</script> 

Utilizzando Struts

<script> 
    var someText = '<bean:write name="myBean" property="text" />'; 
</script> 

Utilizzando JSTL

<script> 
    var someText = '<c:out value="${myBean.text}" />'; 
</script> 

In pratica, è possibile popolare gli oggetti Javascript da JSP. Non dimenticare che scriptlet e tag sono appena restituiti come HTML/XHTML, quindi JS non può parlare con i tag e viceversa.

+2

Il secondo esempio non usa affatto JSTL.Esso si chiama EL (Expression Language) – BalusC

+0

Grazie BalusC ... stavo cercando quella parola .... l'ho aggiornata ... –

+0

Ma EL faceva parte di JSTL - http: //www.jcp.org/aboutJava/communityprocess/first/jsr052 (Appendice A) :) –

0

Non direttamente. Dovresti inserirlo nella pagina da qualche parte.

<script> 
    var fromJsp = '${theVar}'; 
</script> 

Si noti che questo potrebbe essere complicato per oggetti complessi. Forse la serializzazione JSON può essere tua amica qui.

Si noti inoltre che questo è solo a senso unico. È impossibile impostare il valore delle variabili JSP da JavaScript (poiché JavaScript viene eseguito sul lato client dopo che il JSP ha terminato il suo lavoro).

+0

Note le implicazioni XSS: String theVar = "ciao"; alert (\ "XSS \"); // " –

0

È possibile utilizzare questo -

<input type="hidden" id="var1" value="<%=jspVar%>" />

e quindi utilizzare var1 in jQuery.

+0

Supponendo che la variabile sia una stringa e che non contenga un" carattere. – Quentin

1

Java/JSP viene eseguito nel server Web sulla macchina server e produce codice HTML/CSS/JS. La macchina server invia codice HTML/CSS/JS alla macchina client. HTML/CSS/JS viene eseguito nel browser Web sul computer client. Fai clic sulla pagina e visualizza l'origine, non vedi alcun codice Java/JSP.

JSP è una tecnologia di visualizzazione che fornisce un modello per scrivere HTML/CSS/JS e la capacità di interagire con i dati Java di back-end utilizzando taglibs/EL per controllare il flusso della pagina e accedere ai dati.

Ogni volta che si desidera consentire a JavaScript di accedere alle variabili Java/JSP, è sufficiente scrivere una variabile Java come se fosse una variabile JavaScript.

<script>var foo = '${bean.foo}';</script> 

È un esempio eccellente. Si noti che queste virgolette sono richieste per JavaScript stesso, non per JSP/EL.Immaginate che ${bean.foo} rendimenti bar, quindi il codice HTML/CSS/pagina JS generata, che è arrivato al lato client sarebbe finire per assomigliare:

<script>var foo = 'bar';</script> 

Ogni volta che si desidera consentire l'accesso Java/JSP JavaScript variabili, tutto quello che dovete fare è lasciare che JavaScript attivi una richiesta HTTP (XML). Altre informazioni di base ed esempi possono essere trovati in this article.