Dojo 在 java 中增强了网格分页
Dojo enhanced grid pagination in java
我有一个 restful 使用门户框架的 Web 服务,它从数据库中获取数百行。我想在 Dojo EnhancedGrid 上显示分页,每次使用页码 10|20|30 显示 10 行。我可以用这个例子进行分页但是我的休息 url 正在加载数据库中的所有记录
导致性能问题。应该有一些事件,每次当我点击页码时,它应该调用 rest url 并从数据库中获取 10 条记录。我怎样才能做到这一点?
Dojo Enhanced Grid with Pagination 每次需要时调用后端 REST 服务(点击每页的下一个 page/last page/prev page/specific page/x 结果等..) 它通过了 Range请求的 Header 中的参数指示它为当前查询请求了多少项目(即 Range items=0-9 将 return 前 10 个项目和很快)。所以这是由分页支持自动完成的。
您需要做的是在后端REST 服务中读取此参数并return 从数据库中读取指定的行。但要小心,分页需要来自数据库的 objects 数组。
@GET
@Path("getSearchResults")
@Produces(MediaType.APPLICATION_JSON)
public Response getSearchResults(@HeaderParam("Range") String range) {
// parse range String
// perform search
return Response.ok(responseList.toArray()).header("Content-Range", "items " + startItem + "-" + endItem + "/" + totalItems).build();
}
此外,响应还应包含项目数 returned 和总项目数,以便 Pagination 知道要在网格中显示多少页,它还会在左下角显示总计网格。此响应 return 编辑在响应的 Header 以及以下参数中:Content-Range 项目 0-9/120。
如果没有结果,请使用 Content-Range: */0
道场方面:
store=new JsonRest({ handleAs: 'json', target:
'{pathToServices}/rest/services/getSearchResults'});
grid = new EnhancedGrid({
id: "gridId",
store: new ObjectStore({ objectStore: store}),
structure: getGridStructure(),
plugins: {
pagination: {
pageSizes: ["25", "50", "100"],
description: true,
sizeSwitch: true,
pageStepper: true,
gotoButton: true,
maxPageStep: 4,
position: "bottom"},
}
});
这就是您要做的所有事情,增强型网格分页会处理其他所有事情。
我有一个 restful 使用门户框架的 Web 服务,它从数据库中获取数百行。我想在 Dojo EnhancedGrid 上显示分页,每次使用页码 10|20|30 显示 10 行。我可以用这个例子进行分页但是我的休息 url 正在加载数据库中的所有记录 导致性能问题。应该有一些事件,每次当我点击页码时,它应该调用 rest url 并从数据库中获取 10 条记录。我怎样才能做到这一点?
Dojo Enhanced Grid with Pagination 每次需要时调用后端 REST 服务(点击每页的下一个 page/last page/prev page/specific page/x 结果等..) 它通过了 Range请求的 Header 中的参数指示它为当前查询请求了多少项目(即 Range items=0-9 将 return 前 10 个项目和很快)。所以这是由分页支持自动完成的。
您需要做的是在后端REST 服务中读取此参数并return 从数据库中读取指定的行。但要小心,分页需要来自数据库的 objects 数组。
@GET
@Path("getSearchResults")
@Produces(MediaType.APPLICATION_JSON)
public Response getSearchResults(@HeaderParam("Range") String range) {
// parse range String
// perform search
return Response.ok(responseList.toArray()).header("Content-Range", "items " + startItem + "-" + endItem + "/" + totalItems).build();
}
此外,响应还应包含项目数 returned 和总项目数,以便 Pagination 知道要在网格中显示多少页,它还会在左下角显示总计网格。此响应 return 编辑在响应的 Header 以及以下参数中:Content-Range 项目 0-9/120。 如果没有结果,请使用 Content-Range: */0
道场方面:
store=new JsonRest({ handleAs: 'json', target:
'{pathToServices}/rest/services/getSearchResults'});
grid = new EnhancedGrid({
id: "gridId",
store: new ObjectStore({ objectStore: store}),
structure: getGridStructure(),
plugins: {
pagination: {
pageSizes: ["25", "50", "100"],
description: true,
sizeSwitch: true,
pageStepper: true,
gotoButton: true,
maxPageStep: 4,
position: "bottom"},
}
});
这就是您要做的所有事情,增强型网格分页会处理其他所有事情。