dojo EnhancedGrid的两种实现方式对比,转载自http://blog.csdn.net/earthhour/article/details/17203515
后台测试数据初始化:
@H_
403_16@
staticList<User>arrD=newArrayList<User>();
static{
@H_
301_37@for
(inti=0;i<51;i++){
Useru=newUser();
u.setId(i);
u.setName("test"+i);
@H_
301_37@if
(i%2==0){
u.setDesc("devadminuser");
u.setLoginNum(10);
}else{
u.setDesc("devoperuser");
u.setLoginNum(20);
}
arrD.add(u);
}
后台rest服务:
@GET
- @POST
- @Path("/getUsers")
-
- @Produces("application/json")
- publicList<User>getUsers(@ContextHttpServletRequestrequest,@ContextHttpServletResponseresponse){
-
- //items=0-9
-
- //如果requestheader中没有Range参数,则返回全部记录
@H_301_37@if(request.getHeader("Range")==null){
- returnarrD;
- }else{
- //store会在requestheader中添加Range参数,参数值类似这种:items=0-9,表明了查询范围。此处要提取该参数值
- String[]range=request.getHeader("Range").replaceAll("items=","").split("-");
- //查询起点
@H_301_37@intfrom=Integer.parseInt(range[0]);
- //查询终点
@H_301_37@intto=Integer.parseInt(range[1]);
- //防止越界
@H_301_37@if(to>arrD.size()){
- to=arrD.size()-1;
- //还要告诉grid记录总数有多少,以及当前查询范围
- StringcontentRange=String.format("items%d-%d/%d",from,to,arrD.size());
- //responseheader中添加Content-Range参数,参数值类似这种:items0-9/51
- response.setHeader("Content-Range",contentRange);
- //查询结果
@H_301_37@returnarrD.subList(from,to+1);
- }
- }
代码中request.getHeader("Range")是为了取得EnhancedGrid传递过来的查询范围参数,这个参数在request header中,如图
而response.setHeader("Content-Range",contentRange);是传递给EnhancedGrid的参数,该参数要放到response header中,如图
EnhancedGrid根据这一参数计算出记录总数,以及分页。
前台dojo实现方式一: