休息文件服务

时间:2014-05-28 12:26:40

标签: json rest xpages document xpages-extlib

我有以下代码,我希望将Rest Doc Service中的数据显示到Dojo Data Grid中。 Rest服务的输出很好,但Datagrid siplay显示列标题,没有别的。 这是我的代码:

<xp:panel>
        <xe:restService id="restService1" pathInfo="docAccReq1"
            rendered="true" state="true">
            <xe:this.service>
                <xe:documentJsonService
                    contentType="application/json" systemItems="63" var="docAcc"
                    documentUnid="80EFAE936EA978A480257CE4002DBC67">
                    <xe:this.items>
                        <xe:restDocumentItem itemName="Name"
                            name="Name">
                        </xe:restDocumentItem>
                        <xe:restDocumentItem
                            itemName="ACCESSREQUESTER" name="ACCESSREQUESTER">
                        </xe:restDocumentItem>
                        <xe:restDocumentItem
                            itemName="ACCESSREQUESTEDDATE" name="ACCESSREQUESTEDDATE">
                        </xe:restDocumentItem>
                    </xe:this.items>
                </xe:documentJsonService>
            </xe:this.service>
        </xe:restService>

        <xe:djxDataGrid id="djxDataGrid1"
            storeComponentId="restService1" store="docStore">
            <xe:this.dojoAttributes>
                <xp:dojoAttribute name="autoWidth" value="true"></xp:dojoAttribute>
            </xe:this.dojoAttributes>
            <xe:djxDataGridColumn id="djxDataGridColumn1"
                field="Name">
            </xe:djxDataGridColumn>
            <xe:djxDataGridColumn id="djxDataGridColumn2"
                field="ACCESSREQUESTER">
            </xe:djxDataGridColumn>
            <xe:djxDataGridColumn id="djxDataGridColumn3"
                field="ACCESSREQUESTEDDATE">
            </xe:djxDataGridColumn>
        </xe:djxDataGrid>

        <xe:firebugLite id="firebugLite1"></xe:firebugLite>
</xp:panel>
<xp:panel>
    <xc:ccDebugToolbar defaultCollapsed="true"
        collapseTo="left"></xc:ccDebugToolbar>
</xp:panel>

1 个答案:

答案 0 :(得分:3)

REST服务应提供数据数组。这是xe:djxDataGrid所期望的,因为它是一个数据网格控件,它在表中的多行中显示数据。

常用方法是使用REST服务viewJsonService。在视图中定义要在数据网格中查看的所有列。您使用参数“viewName”将视图连接到REST服务,并使用defaultColumns="true"确保所有列都已交付。

您的REST服务定义如下所示:

<xe:restService
    id="restService1"
    pathInfo="docAccReq1">
    <xe:this.service>
        <xe:viewJsonService
            viewName="AccessRequests"
            defaultColumns="true" />
    </xe:this.service>
</xe:restService>

REST服务将JSON数据作为数组提供:

[
  {
      "@entryid":"1-80EFAE936EA978A480257CE4002DBC67",
      "@unid":"80EFAE936EA978A480257CE4002DBC67",
      "@noteid":"12C7A",
      "@position":"1",
      "@read":true,
      "@siblings":200,
      "@form":"access",
      "Name":"Arun",
      "ACCESSREQUESTER":"Arun Agnihotri",
      "ACCESSREQUESTEDDATE":"2014-05-26T08:19:31Z"
  },
  {
      ...
  },
  ...
] 

值“@position”和“@siblings”对Dojo Data Grid很重要。它们告诉我们有多少条目在视图中,哪个位置是当前数据条目。这允许在右侧垂直位置显示正确大小的垂直滚动条。

您使用的Rest服务documentJsonService只提供一个JSON对象(不是数组),并且不提供这些附加信息。