我正在使用DOJO JsonRestStore。我修改对象中的字段。更新/修改从dojo数据存储/ JsonRestStore检索的对象
将修改的对象持久化回数据存储和REST服务的正确过程是什么?
更新:删除有关网格的信息,因为它不是问题的一部分。
我正在使用DOJO JsonRestStore。我修改对象中的字段。更新/修改从dojo数据存储/ JsonRestStore检索的对象
将修改的对象持久化回数据存储和REST服务的正确过程是什么?
更新:删除有关网格的信息,因为它不是问题的一部分。
显然我假设返回的项目将与数据存储同步。它不会出现,必须手动更新使用:
store.setValue(item, field, value);
我也希望命令相当于JPA合并。如果覆盖现有对象:
store.newItem(updatedVersionOfItem);
和项目具有相同的唯一ID,它将覆盖类似于合并旧项目。
有谁知道是否有某种工厂会为每个字段调用store.setValue()的项目创建getter和setter?
我想这将是类似以下内容:
var wrappedItem = itemWrapperFactory.createWrapper(item, store);
...
//Some where in createWrapper(...), this is just the concept
for (var itemField in itemFieldList)
this.__defineGetter__(itemField[index] , function(val){
store.setValue(item, itemField[index], val);
});
我考虑写我自己作为一个整洁的建筑。
通常情况下,store.save()应该足够了...如果不是,这意味着您的网格和商店之间存在问题。
对于错误的东西你可能是正确的。我使用fetchitembyid()获取了一个项目,对其进行了修改,名为store.save(),并且它不会保留回服务。修改对象后isDirty()为false。 – Greg 2012-03-22 20:48:46
如果您使用的是dojox.data.JsonRestore和dojox.grid.DataGrid,如果您已经将网格属性“store”设置为您的JRS,并将您的单元格设置为可编辑的,那么应该将变化明确地反映到当你从网格更新属性时,商店...你还有其他东西吗? – PEM 2012-03-23 08:41:39
没错。我没有从网格更新它们,我只是使用从网格获得的信息检索它们。这是我的问题的一个来源。 – Greg 2012-03-25 19:01:44