javascript中的Spring MVC modelAndView对象

时间:2015-04-10 12:12:42

标签: java javascript spring-mvc controller

问题: 我有一个简单的控制器,它返回一个硬编码位置列表。当我想使用$ .get在我的javascript文件中获取我的位置并在我的控制台中打印时,我会得到一些奇怪的“未定义”结果。

控制器:

@RestController
@RequestMapping("/locationOverview")
public class LocationOverviewController {

    private LocationGuide service;

    public LocationOverviewController() {
        this.service = new LocationGuide("Memory");
    }

    @RequestMapping(method = RequestMethod.GET)    
    protected ModelAndView getLocations() {
        ArrayList<Location> locations = new ArrayList<Location>();
        locations.add(new Location(1,"KHL",new Geolocation(51,51)));
        locations.add(new Location(2,"KUL",new Geolocation(51,51)));

        return new ModelAndView("locationOverview", "locations", locations);
    }

}

mapScript JS:

function initialize() {
    $.get("locationOverview.htm", function(data){
        for(var i=0; i<data.length; i++){
            console.log(data[i].name);
        }
    })
}

JSP文件:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="domain.Location"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Leuven Speaks</title>
        <script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script>
        <script type="text/javascript" src="<c:url value="/js/mapScript.js" />"></script>
    </head>
    <body onload="initialize()">

        <jsp:include page="header.jspf"/>
    </body>  
</html>

1 个答案:

答案 0 :(得分:0)

您应该使用dev工具检查数据包含的内容。您向我们展示的控制器方法看起来不是映射到locationOverview.htm的控制器方法。如果要使用ajax查询数据,请使用@ResponseBody注释返回列表。

模型中传递的数据将在您定义为ModelAndView中的视图的JSP页面中可用。

一些学习资源:

http://www.beingjavaguys.com/2014/05/json-response-with-responsebody_31.html

https://developer.chrome.com/devtools/docs/javascript-debugging