2010-03-12 47 views
5

我有一些問題,內容如下:是否可以使用jsp變量值來初始化JQUERY變量?

  1. 我如何使用jQuery代碼的JSP變量/數組?在這裏,我們擁有的JQUERY代碼存儲在單獨的.js文件中,並且該文件包含在JSP文件中。

  2. 其實我想用JSP變量初始化JQUERY數組。 所以請指導我完成這項任務。

回答

17

在普通老式JSP

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

使用EL(表達式語言)使用

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

的Struts

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

使用JSTL

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

實質上,可以從JSP填充Javascript對象。不要忘記,腳本和標籤只是作爲HTML/XHTML呈現,所以JS無法與標籤交談,反之亦然。

+2

第二個示例不要使用JSTL,它被稱爲EL(表達式語言) – BalusC

+0

感謝BalusC ...我正在尋找那個詞....我已經更新了它... –

+0

但EL是JSTL的一部分 - http: //www.jcp.org/aboutJava/communityprocess/first/jsr052(附錄A):) –

0

不是直接。您必須將其設置到某個地方的頁面中。

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

請注意,對於複雜的對象,這可能會變得棘手。也許JSON序列化可以成爲你的朋友。

另請注意,這只是單向的。從JavaScript中設置JSP變量的值是不可能的(因爲在JSP完成其工作後JavaScript運行客戶端)。

+0

注意XSS的含義:String theVar =「hello」; alert(\「XSS \」); //「 –

0

您可以使用此 -

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

然後在jQuery的使用VAR1。

+0

假設變量是一個字符串並且不包含」字符 – Quentin

1

Java/JSP在服務器機器的web服務器上運行並生成HTML/CSS/JS代碼。服務器機器將HTML/CSS/JS代碼發送到客戶機。 HTML/CSS/JS在客戶機的webbrowser中運行。右擊頁面並查看源代碼,您看不到任何Java/JSP代碼。

JSP是一種視圖技術,它提供了一個用於編寫HTML/CSS/JS的模板,並且能夠使用taglibs/EL與後端Java數據交互來控制頁面流和訪問數據。

無論何時您想讓JavaScript訪問Java/JSP變量,您只需編寫一個Java變量就好像它是一個JavaScript變量。

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

是一個很好的例子。請注意,這些引號對於JavaScript本身而言是必需的,而不是JSP/EL。試想一下,${bean.foo}回報bar,然後將生成的HTML/CSS/JS其到達客戶端的網頁將最終看起來像:

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

每當你想要讓Java/JSP的訪問JavaScript的變量,你需要做的是讓JavaScript激發(XML)HTTP請求。更多的背景信息和示例可以在this article中找到。