使用@ResponseBody修改杰克逊对Extjs网格中分页的响应

时间:2013-07-26 18:04:03

标签: json spring spring-mvc jackson

我有课程用户:

public class User {
    private Integer id;
    private String name;
    .....
}

并有控制器方法:

@RequestMapping ...
@ResponseBody public List<User> loadAll(...) {
    List<User> users = ...;
    return users;
}

现在json看起来像:

[{"id":1,"name":"Michael"},{"id":2,"name":"Peter"},...]

并且一切正常,但我想加入分页。 json应该如何:

["users":[{"id":1,"name":"Michael"},{"id":2,"name":"Peter"},...],"totalCount":500 ]

我正在努力找到做出此修改的最佳做法。

春季版:3.1.2.RELEASE

由于

PS.我是杰克逊的新手。我使用net.sf.json但不想完全生成响应。

2 个答案:

答案 0 :(得分:1)

您应该尝试使用HashMap。像这样:

@RequestMapping ...
@ResponseBody public Map<String, Object> loadAll(...) {

    Map<String, Object> response = new HashMap<String, Object>();

    List<User> users = ...;

    response.put("users", users);
    response.put("totalCount", 500);

    return response;
}

答案 1 :(得分:1)

在视图对象中包装用户列表,如下所示:

@RequestMapping(...)
public @ResponseBody Users loadAll() {
    int totalCount = ...;
    List<User> list = ...;
    return new Users(totalCount, list);
}

...

final class Users {
    public final int totalCount;
    public final List<User> users;
    // ...
}