2009-11-02 76 views
1

我:在我的jsp頁面中使用JSTL在Javascript

<form:select path="index" id="sIndex" onchange="showDetails()"> 
    <form:options items="${smth}" itemLabel="name" itemValue="index"/> 
</form:select> 

在我的javascript函數:

​​

而且這不會發生在$ {}的指數,但如果我使用警報(索引)它會識別它。

回答

5

Java/JSP/JSTL運行在服務器端,生成HTML/CSS/JS輸出並將其發送到客戶端。 HTML/CSS/JS運行在客戶端,而不是服務器端,正如你所期望的那樣。在瀏覽器中打開頁面並執行「查看源代碼」。你看到了嗎?

Javascript只能看到客戶端的HTML DOM樹並且可以訪問它。您需要從HTML DOM樹中獲取名稱和地址。您已在選項元素中有名稱,但地址無法使用。您可以使用JSTL生成一個Javascript數組變量,以便Javascript代碼可以進一步使用它。

要了解有關Java/JSP和Javascript之間的牆的更多信息,您可能會發現this article有用。

+0

嗨,謝謝你的回覆,這篇文章非常有用。 我試圖生成數組變量,但我無法得到它的工作(我收到:'根據標籤文件中的TLD或屬性指令,屬性項不接受任何表達式')。 有什麼建議嗎?謝謝 – user198298 2009-11-03 06:36:34

+1

這是一個不同的問題,可能需要自己的主題。此問題表示版本衝突。至少您需要檢查並對齊JSTL/JSP/Servlet版本。最小值爲Servlet 2.4/JSP 2.0(例如Tomcat 5.x)和JSTL 1.1。更好的辦法是獲得更新的Servlet 2.5/JSP 2.1(例如Tomcat 6.x)和JSTL 1.2。 – BalusC 2009-11-03 11:23:11

0

EL表達式($ {}之間的代碼)在JSP servlet的運行時計算,而不是在瀏覽器中呈現頁面時(即您的JavaScript被調用時)。

查看生成的頁面源,你可能會看到問題。