簡體   English   中英

將Servlet傳遞的復雜對象存儲到JavaScript中的數組中

[英]Storing complex objects passed by servlet into an array in javascript

我有一個Servlet,它將ArrayList傳遞到接收它的jsp頁面中並將其放置在Array中,但是如果我將它們存儲在這樣的數組中,則無法訪問Loc內部的參數:

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

可變照片包含希望存儲在locations數組中的諸如緯度,經度和准確性之類的屬性。 但是,如果我像這樣存儲它們,該如何在代碼的其他部分中訪問它們。

我想做的例子:

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;
    }
}

嘗試locations["${loop.index}"] = {JSON.stringify("${photo}")}; 然后,您可以訪問編寫的屬性:

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

注意: photo是JSONObject的字符串表示形式。 像這樣:

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

要將對象轉換為json對象,可以使用GSON庫。 這里是一個不錯的教程的鏈接

如果您有Java phtoObjects列表, phtoObjects可以在servlet中執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM