在 Dojo 的 JsonRest 中使用查询字符串参数而不是"Range:" HTTP 标头



我试图在Dojo中设置分页。我基本上有一个包含数千条记录的表,我想逐页向用户显示它们,而不是一次全部显示。我使用dgrid与JsonRest存储。根据JsonRest的文档,存储使用HTTP的"Range:"头来执行分页。当对某个范围的物品发出请求时,存储将包含一个带有指定范围的物品范围单元的"range:"标头。(http://dojotoolkit.org/reference-guide/1.10/dojo/store/JsonRest.html)不幸的是,这是一个大问题,因为我们的一些用户背后的代理过滤掉HTTP的范围标头。我看到的唯一解决方法是使用查询字符串参数而不是"Range:"HTTP标头。所以我会有一个URL看起来像这样:http://myhost.com/myapp/things?start=10&end=19而不是让Range Header变成"Range: items=0-24"

我该如何着手解决这个问题?如果您有其他解决方法的建议,我将不胜感激。

我找到了一个简单的解决方案。只需重写Dojo的JsonRest类,并在创建dgrid时使用它而不是JsonRest。

define(["dojo/_base/declare", "dojo/store/JsonRest"], function(declare, JsonRest){
    var base = JsonRest;
    return declare("myapp.JsonRest2", base, {
        query: function(query, options){
            if(options.start >= 0 || options.count >= 0){
                query.start = options.start >= 0 ? options.start : 0;
                query.count = options.count >= 0 ? options.count : 10;
            }
            return this.inherited(arguments);
        }
    });
});

最新更新