2011-02-19 49 views
4

Plz考慮這種情況。我有一個名爲的人一個Java類,如下:如何在jsp中訪問來自服務器的javascript列表

Person 
--------- 
Integer Id 
String name 
String address 

現在通過我的春天控制器我傳遞給我的jsp頁面(neighbors.jsp)的人員名單像圖所示:

List<Persons> persons = new ArrayList<Person>(); 
. 
. 
. 
return new ModelAndView("/neighbors").addObject("persons", persons); 

現在問題在這裏。我有嵌入在neighborss.jsp中的javascript格式的google maps api顯示登錄人員的位置。這可以正常工作。 Google地圖也提供地址比較。我想顯示用戶地址範圍在5英里範圍內的其他人的地址標記。每個標記都是指向要顯示該特定人員信息的頁面的鏈接。

假設我以下列格式訪問每個地址,我該如何調用javascript函數?

<c:forEach items="${persons }" var="person"> 

     <!-- I want to pass each address ${person.address} to the javascript functions thats going to compare addresses --> 

</c:forEach> 

有人可以幫我在這裏如何處理情況?

+0

相關:http://stackoverflow.com/questions/2547814/mixing-jsf-el-in-a-javascript-file/2547908#2547908(描述的Facelets/JSF,但原則對於JSP/JSTL來說是一樣的) – BalusC 2011-02-19 02:21:15

回答

2

兩種方式做到這一點: -

第一種方式 ...你可以將該值設置爲隱藏字段,允許JavaScript來訪問它: -

<c:forEach items="${persons}" var="person" varStatus="i"> 
    <input id="address${i.count}" type="hidden" value="${person.address}"> 
</c:forEach> 

在你的JavaScript : -

yourJavascriptFunction(document.getElementById("address1").value); 

方式二 ...使用<script>標籤在你<c:foreach>標籤: -

<c:forEach items="${persons}" var="person" varStatus="i"> 
    <script> 
     yourJavascriptFunction("${fn:replace(person.address, "\"", "\\\"")}"); 
     ... 
    </script> 
</c:forEach> 
+0

你有正確的想法,但是你的第二個例子根本無法工作,因爲你一次又一次地設置了一個變量。如果地址包含雙引號,它也會中斷。 – 2011-02-19 01:20:12

相關問題