【问题标题】:Spring Ajax List returned but objects emptySpring Ajax List 返回但对象为空
【发布时间】:2016-05-16 02:31:38
【问题描述】:

我正在构建类似于储物柜管理系统的东西,并且储物柜有更新历史记录。我想使用 Ajax 返回此历史记录的列表,最多为列表中的 X 个条目。每当我返回List<LockerHistoryEntity>Iterable<LockerHistoryEntity> 时,都会返回对象的数量,但所有的对象都是空的。

Example of the problem

Ajax 调用(在这种情况下使用 getHistory(100) 调用):

function getHistory(limit) {
    var data = {};
    data["limit"] = limit;

    $.ajax({
        type: "POST",
        contentType: "application/json",
        url: "/gethistory",
        data: JSON.stringify(data),
        dataType: 'json',
        timeout: 100000,
        success : function(data) {
            fillTable(data);
            console.log(data);
            console.log(data.result);
        },
        error : function(e) {
            //error
        }
    });
}

@RestController

@JsonView(Views.Public.class)
    @RequestMapping(value = "/gethistory", method = RequestMethod.POST, produces="application/json")
    @ResponseBody
    public Iterable<LockerHistoryEntity> getHistory(@RequestBody HistoryLimit limit) {
        Iterable<LockerHistoryEntity> lockerHistory;

        if (limit.getLimit() >= 0) {
            lockerHistory = history.findAllLimit(limit.getLimit());
        } else {
            lockerHistory = history.findAll();
        }

        return lockerHistory;
    }

当使用for循环打印出lockerHistory时,数据全部正确显示。

遗憾的是,我找不到关于这个确切问题的任何主题,因此这篇文章。

【问题讨论】:

标签: javascript jquery json ajax spring


【解决方案1】:

在将响应发送到 AJAX 之前,您需要将对象转换为 JSON 格式。 见此链接:http://howtodoinjava.com/jackson/jackson-examples-convert-java-object-to-from-json/

【讨论】:

  • 谢谢,使用ObjectMapper.mapper.writerWithDefaultPrettyPrinter().writeValueAsString(lockerHistory); 解决了这个问题,将对象数组作为字符串返回。对于任何未来的人,不要忘记在字符串上的 javascript 中使用 $.parseJSON()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-28
  • 1970-01-01
  • 2014-04-21
  • 2017-08-25
  • 1970-01-01
  • 2019-07-12
  • 1970-01-01
相关资源
最近更新 更多