我在服务类
中有类似跟随的方法@GET
@Produces(MediaType.APPLICATION_JSON)
public Response listUsers(
@QueryParam("page") @DefaultValue("1") Integer page,
@QueryParam("sortFields") @DefaultValue("id") String sortFields,
@QueryParam("sortDirections") @DefaultValue("asc") String sortDirections) {
PaginatedListWrapper listWrapper = new PaginatedListWrapper<>();
listWrapper.setCurrentPage(page);
listWrapper.setSortFields(sortFields);
listWrapper.setSortDirections(sortDirections);
listWrapper.setTotalResults(this.countAll());
int start = (listWrapper.getCurrentPage() - 1) * listWrapper.getPageSize();
listWrapper.setList(userFacade.findRange(new int[]{start, listWrapper.getPageSize()}));
return Response.status(Response.Status.OK).entity(listWrapper).build();
}
我的PaginatedListWrapper类如下
public class PaginatedListWrapper {
private Integer currentPage;
private Integer pageSize;
private Integer totalResults;
private String sortFields;
private String sortDirections;
private List list;
...
我正在获得如下的输出
Object{ currentPage: 1, list: Array[2], 0: "net.brac.ict.mis.tup.uplift.business.entities.User[ id=1 ]" 1: "net.brac.ict.mis.tup.uplift.business.entities.User[ id=2 ]" , pageSize: 10, sortDirections: "asc", sortFields: "id"…}
为什么我没有将用户列表作为json对象?像对象数组[{},{},{} ...] 我在这里失踪了什么? 除了使用泽西或杰克逊之外,我想学习这样做的核心内容。 在我的maven中它只是javaee-web-api和eclipselink
答案 0 :(得分:0)
如果您的User
实体使用JAXB注释进行注释,那么基本上可以做得更简单:
@GET
@Produces(MediaType.APPLICATION_JSON)
public Collection<User> listUsers(
@QueryParam("page") @DefaultValue("1") Integer page,
@QueryParam("sortFields") @DefaultValue("id") String sortFields,
@QueryParam("sortDirections") @DefaultValue("asc") String sortDirections) {
PaginatedListWrapper listWrapper = new PaginatedListWrapper<>();
listWrapper.setCurrentPage(page);
listWrapper.setSortFields(sortFields);
listWrapper.setSortDirections(sortDirections);
listWrapper.setTotalResults(this.countAll());
int start = (listWrapper.getCurrentPage() - 1) * listWrapper.getPageSize();
return userFacade.findRange(new int[]{start, listWrapper.getPageSize()});
}
JAX-RS有一个内置的Collection
MessageBodyWriter
提供程序,并会相应地使用JAXB映射您的实体。这就是我在JAX-RS服务中返回所有实体的方式。