XPages Dojo数据网格和自定义REST服务

时间:2013-11-11 16:46:24

标签: rest datagrid dojo xpages

自定义REST服务可以用作dojo数据网格的数据源吗?我需要将来自三个不同数据库的数据合并到一个数据网格中。列数据需要是可排序的。 REST服务的响应看起来是正确的。我在将JSON数据绑定到dojo网格列时遇到了问题。

2 个答案:

答案 0 :(得分:2)

非常有趣 - 我测试并使用自定义REST服务看到了同样的事情 - 当它被引用为网格的storeComponentId时它不起作用。

我按照以下步骤操作:

  • 在页面资源中包含两个dojo模块以设置数据存储
  • pass-thru脚本标记,包含为网格设置JSON数据存储的代码(使用资源指定的dojo模块)
  • 网格的store属性设置为为标记中的数据源设置的变量。 (storeComponentId需要XPages组件名称)

以下是一些显示更改的片段:

<xp:this.resources>
  <xp:dojoModule name="dojo.store.JsonRest"></xp:dojoModule>
  <xp:dojoModule name="dojo.data.ObjectStore"></xp:dojoModule>
</xp:this.resources>

...

<xe:restService id="restService1" pathInfo="gridData">

...

<script>
  var jsonStore = new dojo.store.JsonRest(
    {target:"CURRENT_PAGE_NAME_HERE.xsp/gridData"}
  ); 
  var dataStore = dojo.data.ObjectStore({objectStore: jsonStore});
</script>

...

<xe:djxDataGrid id="djxDataGrid1" store="dataStore">

这里有更多信息和完整示例:

http://xcellerant.net/dojo-data-grid-33-reading-custom-rest-service/

答案 1 :(得分:0)

最简单的方法是从扩展库开始。有一个自定义JSON-Rest服务的示例。虽然它从一个源提取数据,但很容易扩展以从多个数据中提取数据。我强烈建议你注意所有的表现。

我会做什么:

  • 创建一个将JSON吐出到网格的bean
  • 使用一个数据库进行测试
  • 了解threads in XPageshere
  • 为数据库分别使用一个线程,减少加载时间
  • 使用带有比较器的ConcurrentSkipListMap,这样您就可以在对用户最有用的排序顺序中使用初始JSON(或者从首选项或上次运行中获得的那个)

Memento bene:Java Collections Framework是你的朋友(有时很难)。

告诉我们它是怎么回事!