Dojo增强了java中的网格分页

时间:2015-01-20 19:04:22

标签: java dojo restful-url

我有一个使用门户框架的restful webservice,它从数据库中获取了数百行。我希望每次使用页码10 | 20 | 30显示10行时,在Dojo EnhancedGrid上显示分页。我能够对这个例子进行分页但是我的其他url正在加载数据库中的所有记录 导致性能问题。应该有一些事件,每当我点击页码时,它应该调用rest url并从数据库中获取10条记录。我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:2)

带有分页的Dojo 增强型网格会在每次必要时调用后端REST服务(点击下一页/最后一页/上一页/每页特定页面/ x结果等等。)它在请求的标头中传递范围参数,指示它为当前查询请求了多少项(即范围项= 0-9 将返回前10项,依此类推)。所以这是由分页支持自动完成的。

您需要做的是在后端REST服务中读取此参数并从数据库返回指定的行。但要小心,分页需要数据库中的一组对象。

@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();
}

此外,响应应包含返回的项目数和项目总数,以便Pagination知道要在Grid中显示的页数,并且还会在Grid的左下角显示总计。此响应在响应的标题中以及以下参数中返回:内容范围项目0-9 / 120 。 如果没有结果,请使用内容范围:* / 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"},
        }
    });

这就是你所要做的,增强网格分页可以处理其他所有事情。