【问题标题】:dojo 1.10 JsonRest idAttribute - server passed a float in PUTdojo 1.10 JsonRest idAttribute - 服务器在 PUT 中传递了一个浮点数
【发布时间】:2014-07-31 15:36:51
【问题描述】:

刚开始使用 dojo/JsonRest,但在将更新发送回我的服务器时遇到了一些问题。我有 2 个问题一直困扰着我;

下面的代码生成一个网格,其中一列设置为可编辑。 我的 json 数据中的主键是“jobName”属性(因此是 JsonRest 存储中的 idAttribute)。

第一个问题是关于 PUT 中的 URI; - 当我调用 dataStore.save() 时,服务器获取的是 PUT,但 URI 是 /myrestservice/Jobs/0.9877865987 (它每次都会更改,但始终是浮点数) - 我看不出道场是从哪里得到浮点数的?这不是该行中我的 idAttribute 值。如何让 PUT 尊重 JsonRest 商店中的 idAttribute? - 我确实尝试将 MemoryStore 中的 idProperty 设置为“jobName”,但这将 PUT 更改为 POST 并删除了浮动,但我仍然没有在 URI 中获得我的 REST 服务器需要的 jobName。

关于PUT内容的第二个问题; - PUT 包含整行。我真的很喜欢 idAttribute 和改变的数据 - 这可能吗?

我浏览过示例和文档,但处理 JsonRest 的 PUT/POST 部分的示例并不多。

谢谢

    var userMemoryStore = new dojo.store.Memory( );
    var userJsonRestStore = new dojo.store.JsonRest({target:"/myrestservice/Jobs/", idAttribute:"jobName"});
    var jsonStore = new dojo.store.Cache(userJsonRestStore, userMemoryStore);
    var dataStore = new dojo.data.ObjectStore( {objectStore: jsonStore } );

    /*create a new grid*/
    var grid = new dojox.grid.DataGrid({
        id: 'grid'
        ,store: dataStore
        ,structure: layout
        ,rowSelector: '20px'}
        ,"gridDiv");

    grid.startup();
    dojo.query("#save").onclick(function() {
                    dataStore.save();
                });

【问题讨论】:

    标签: dojo jsonreststore


    【解决方案1】:

    我想你想要idProperty,而不是idAttribute。在用于缓存的内存存储中设置idProperty 也可能会有所帮助;这可能是产生随机浮点数的原因。

    至于第二个问题,那可能需要定制;我不相信 OOTB 商店(或网格)通常期望发送部分商品。

    【讨论】:

    • 工作愉快!我正在使用 JsonRestStore,但移至 JsonStore 并没有注意到该属性已更改名称。这也意味着 PUT 请求仅包含来自我的 json 对象的属性,而不是添加会使我在服务器上更加努力地工作的“id”属性。关于第二个问题——没关系——这只是为了方便。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2014-03-07
    相关资源
    最近更新 更多