java - 如何将 json 对象从 java 传递到 javascript?

标签 java javascript json spring

我正在尝试将数据从 spring Controller 传递到 javascript,但没有成功。我应该使用ajax来做到这一点吗?请给我一些关于如何做到这一点的提示?什么是最好的方法?

在我的 Controller 中,我尝试传递数据:

@RequestMapping(value = "/map", method = RequestMethod.GET)
public String map(ModelMap model) {

...

model.addAttribute("trackpoints", json);


return "map";

}

其中 json 是一个 gson 对象 (JsonObject),包含:

{"trackpoints":[{"latitude":52.390556,"longitude":16.920295},
{"latitude":52.390606,"longitude":16.920262}]}

在我的 jsp 文件中我有:

<script type="text/javascript">

var myJSON = {};

myJSON = ${trackpoints};

document.writeln(myJSON.trackpoints);

</script>

但结果是:

[object Object],[object Object]

我更详细地解释了这一点:>

我想使用 google maps api 来显示 map 并绘制由许多纬度、经度协调的路径。 我认为 json 比 list 更好,但我可能是错的。

我尝试调整文档中的代码 - 在下面的代码中,我尝试用循环和 json 对象中的值替换硬编码坐标。

<script type="text/javascript">
function initialize() {
    var myLatLng = new google.maps.LatLng(0, -180);
    var myOptions = {
        zoom : 3,
        center : myLatLng,
        mapTypeId : google.maps.MapTypeId.TERRAIN
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"),
            myOptions);
    var flightPlanCoordinates = [
            new google.maps.LatLng(37.772323, -122.214897),
            new google.maps.LatLng(21.291982, -157.821856),
            new google.maps.LatLng(-18.142599, 178.431),
            new google.maps.LatLng(-27.46758, 153.027892) ];
    var flightPath = new google.maps.Polyline({
        path : flightPlanCoordinates,
        strokeColor : "#FF0000",
        strokeOpacity : 1.0,
        strokeWeight : 2
    });

    flightPath.setMap(map);
}
</script>

我希望现在更清楚了:)

最佳答案

myJSON.trackpoints 是两个对象的数组。如果你想把它写成 HTML,你可以这样做:

function writeCoordinates(coords) {
    document.writeln('<div>lat = ' + coords.latitude);
    document.writeln(', lon = ' + coords.longitude + '</div>');
}

int len = myJSON.trackpoints.length;
for (int i = 0; i < len; i++) {
    writeCoordinates(myJSON.trackpoints[i]);
}

顺便说一句:当您使用 AJAX 请求时,JSON 非常有用,但对于“正常”请求,最好将纯 Java 对象放入模型中,例如:

Spring Controller :

List<Coordinate> trackpoints = ...
model.addAttribute("trackpoints", trackpoints);

JSP:

<c:forEach items="${trackpoints}" var="coord">
    <div>lat = ${coord.latitude}, lon = ${coord.longitude}</div>
</c:forEach>

鉴于 Coordinate 类具有方法 getLatitude()getLongitude()。通过使用 JSON 编码器,Spring Controller 中的该方法甚至可以同时用于“正常”和 AJAX 请求,例如 Jackson , 和 ContentNegotiatingViewResolver .

关于java - 如何将 json 对象从 java 传递到 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9676423/

相关文章:

java - 动态字符串的正则表达式

javascript - 上传前查看从客户端文件系统中选择的图像?

javascript - $scope.$watch 不在 ui.bootstrap.modal Controller 中引发事件

python - 将图边列表转换为 JSON 树

mysql - 如何在MySQL数据库中定义一个表来存储JSON对象?

java - Android Studio中的Card View添加点击效果波纹效果

java - 发送 POST 数据的 HttpURLConnection 出现错误

java - 奇怪的 Java 数学结果

javascript - 当使用 "hosts"文件中定义的别名时,jQuery.ajax 无法找到服务器,但可以使用 IP 地址 - 如何修复?

java - Jackson TypeReference 在扩展时是否有效?