首页 > 解决方案 > 使用spring控制器将数组列表传回struts jsp?

问题描述

处理两个项目,一个基于 struts,一个基于 spring。我需要能够进行 ajax 调用以带回对象列表,以便我可以在 struts 项目的 html 中显示它们。目前,对控制器的 ajax 调用工作正常,但我在传回数组列表时遇到了麻烦。有什么建议么?

javascript

$.ajax({
    url: 'sampleUrl.com/controller/call',
    success: function(data) {
        //handle returned object
    }
}

控制器方法

@RequestMapping(value = 'call', method = RequestMethod.Get)
public @ResponseBody List<SampleObject> getSampleObjects(HttpServletRequest request) {
     List<SampleObject> sampleList = new ArrayList<SampleObject>();
     sampleList.add(new SampleObject());
     return sampleList;
}

标签: javascriptjavaajaxspringstruts

解决方案


在控制器中,我必须将 products="application/json" 添加到 @RequestMapping 并在返回之前创建一个新的 Gson 并返回列表的 gson.ToJson() 。在我的 jsp 文件中,一旦通过将 dataType: 'json' 添加到 ajax 调用返回 JSON,我就能够正常循环遍历列表。

javascript

$.ajax({
    url: 'sampleUrl.com/controller/call',
    dataType: 'json',
    success: function(data) {
        for(var i = 0; i < data.length; i++) {
            console.log(data[i]);
        }
    }
}

控制器:

@RequestMapping(value = 'call', method = RequestMethod.Get, produces="application/json")
public @ResponseBody String getSampleObjects(HttpServletRequest request) 
{
     List<SampleObject> sampleList = new ArrayList<SampleObject>();
     sampleList.add(new SampleObject());
     Gson gson =  new Gson();
     return gson.toJson(sampleList);
}

推荐阅读