在Dojo的JsonRest中使用查询字符串参数而不是“范围:”HTTP标头

时间:2014-08-15 14:00:59

标签: json proxy dojo pagination dgrid

我试图在Dojo中设置分页。我基本上有一个包含数千条记录的表,我希望逐页显示它们而不是一次性显示。我正在使用带有JsonRest存储的dgrid。根据JsonRest的文档,商店使用HTTP"范围:"标头执行分页。当对一系列商品发出请求时,商店将包含一个"范围:"带有指定范围的项目范围单位的标题。 (http://dojotoolkit.org/reference-guide/1.10/dojo/store/JsonRest.html)不幸的是,这是一个很大的问题,因为我们的一些用户落后于过滤掉HTTP范围标头的代理。我看到的唯一解决方法是使用查询字符串参数而不是"范围:" HTTP标头。所以我有一个看起来像这样的网址: http://myhost.com/myapp/things?start=10&end=19 而不是让范围标题为"范围:项目= 0-24"

我将如何解决这个问题?如果您对替代解决方法有建议,那么也会非常感激。

1 个答案:

答案 0 :(得分:1)

我找到了一个简单的解决方案。在创建dgrid时,只需覆盖Dojo的JsonRest类并使用它而不是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);
        }
    });
});