2014-02-07 44 views
0

我有一個servlet傳遞一個ArrayList到一個jsp頁面,它接收它並將它放在一個數組中,但我不能訪問Loc中的參數如果我存儲它們在這樣的陣列中:將複雜的對象通過servlet傳遞到一個數組中的javascript

var locations = new Array(); 
<c:forEach items="${photosName}" var="photo" varStatus="loop"> 
    locations["${loop.index}"] = "${photo}"; 
</c:forEach> 

變量照片包含我希望存儲在位置數組中的緯度,經度和精度等屬性。但是,如果我將它們存儲爲這樣,我如何在代碼的其他部分訪問它們。什麼我想要做

例子:

locations[i].latitude 
locations[i].longitude 
locations[i].accuracy 

歡迎任何幫助:)

現在嘗試這樣:

var locations = new Array(); 
<c:forEach items="${photosName}" var="photo" varStatus="loop"> 
    locations["${loop.index}"] = JSON.stringify("${photo}"); 
</c:forEach> 
alert("latitude: "+locations[0].latitude+ " longitude: "+locations[0].longitude); 

它打印緯度:未定義經度:不確定。我是否需要爲json.stringify導入某些內容才能工作?在JSP

照片對象由此類表示:

@Entity 
public class Loc implements Serializable { 

    @Id 
    @GeneratedValue(strategy = GenerationType.TABLE) 
    private long id; 
    private double latitude; 
    private double longitude; 
    private long time; 
    private double accuracy; 
    private int processed; 

    public long getId() { 
     return id; 
    } 

    public void setId(long id) { 
     this.id = id; 
    } 

    public double getLatitude() { 
     return this.latitude; 
    } 

    public void setLatitude(double latitude) { 
     this.latitude = latitude; 
    } 

    public double getLongitude() { 
     return this.longitude; 
    } 

    public void setLongitude(double longitude) { 
     this.longitude = longitude; 
    } 

    public long getTime() { 
     return this.time; 
    } 

    public void setTime(long time) { 
     this.time = time; 
    } 

    @Override 
    public String toString() { 
     return "latitude: " + latitude + " longitude: " + longitude + "time: " 
       + time; 
    } 

    public double getAccuracy() { 
     return accuracy; 
    } 

    public void setAccuracy(double accuracy) { 
     this.accuracy = accuracy; 
    } 

    public int getProcessed() { 
     return processed; 
    } 

    public void setProcessed(int processed) { 
     this.processed = processed; 
    } 
} 
+0

從哪裏是U讓你的照片對象(Java對象)? – vlio20

+0

可以說你有一個名爲'photoList'的java對象列表。你現在需要做的是轉換JavaScript。試試這個:'var photo list = JSON.stringify(<%gson.toJson(photoList).toString%>) – vlio20

+0

for循環之前? – JoaoFilipeClementeMartins

回答

0

locations["${loop.index}"] = {JSON.stringify("${photo}")};嘗試。然後,當你寫,你可以訪問屬性:

locations[i].latitude 
locations[i].longitude 
locations[i].accuracy 

注:照片是一個JSONObject的字符串表示。像這樣:

JSONObject jsonPhoto = gson.toJson(photoObj) //photoObj is instance of your java photo object class 
String photo = jsonPhoto.toString(); 

對於將對象轉換爲json對象,您可以使用GSON庫。這裏是link一個很好的教程。

如果你對Java的名單phtoObjects你可以像這樣在你的servlet:

<%@ page import="com.google.gson.Gson" %> 
<%GSON gson = new Gson();%>  
var photoArray = JSON.stringify(<%=gson.toJson(phtoObjects).toString()%>); 
+0

我試過了:var locations = new Array(); \t \t \t \t \t位置[」 $ {loop.index} 「] = JSON.stringify(」 $ {照片} 「); \t \t \t \t警報(」 緯度:「+位置[0] + .latitude 「龍妮tude:「+ locations [0] .longitude);結果未定義 – JoaoFilipeClementeMartins

+0

請將此代碼添加到您的問題中,以便閱讀。 – vlio20

+0

gson無法解析 – JoaoFilipeClementeMartins

相關問題