XPages Dojo数据网格和REST - 你能指向另一个应用程序的视图吗?

时间:2013-06-21 15:10:58

标签: xpages

我想在我正在构建的应用程序中使用Dojo Data Grid / REST服务架构。但是,我找不到属性(或代码)让REST服务指向当前其他应用程序之外的视图。

我可以在REST服务的视图名称中使用数据上下文吗?或者是否有另一个属性设置为指向另一个应用程序中的视图?

谢谢 - 感谢您的帮助!

---------编辑6/24/2013 ---------

我已经尝试了viewItemFileService和viewJSONService,我只能让viewJSONService与其他数据库一起使用。 viewItemFileService只显示“抱歉,发生了错误”,其中数据行应该是。这是代码 - 我不确定我在哪里犯错:

            <xp:panel>
                View JSON<xp:br></xp:br>
                <xe:restService id="restService1">
                    <xe:this.service>
                        <xe:viewJsonService databaseName="voca/vocadatastore.nsf"
                            defaultColumns="true" viewName="InvoicePersonnel" var="entry1"
                            contentType="application/json">
                        </xe:viewJsonService>
                    </xe:this.service>
                </xe:restService>
                <xe:djxDataGrid id="djxDataGrid2" autoHeight="10"
                    storeComponentId="restService1">
                    <xe:djxDataGridColumn id="djxDataGridColumn5"
                        label="Description" field="description" width="auto">
                    </xe:djxDataGridColumn>
                    <xe:djxDataGridColumn id="djxDataGridColumn6"
                        label="Items" field="items" width="auto">
                    </xe:djxDataGridColumn>
                    <xe:djxDataGridColumn id="djxDataGridColumn7"
                        label="Cost" field="cost" width="auto">
                    </xe:djxDataGridColumn>
                    <xe:djxDataGridColumn id="djxDataGridColumn8"
                        label="Total" field="total" width="auto">
                    </xe:djxDataGridColumn>
                </xe:djxDataGrid>
            </xp:panel>
            <xp:br></xp:br>
            <xp:br></xp:br>
            <xp:panel>View Domino<xp:br></xp:br>
                <xe:restService id="restServicePers">
                    <xe:this.service>
                        <xe:viewItemFileService databaseName="voca/vocadatastore.nsf"
                            defaultColumns="true" viewName="InvoicePersonnel" var="entry2">
                        </xe:viewItemFileService>
                    </xe:this.service>
                </xe:restService>
                <xe:djxDataGrid id="djxDataGrid1" autoHeight="10"
                    storeComponentId="restServicePers">
                    <xe:djxDataGridColumn id="djxDataGridColumn1"
                        label="Description" field="description" width="auto">
                    </xe:djxDataGridColumn>
                    <xe:djxDataGridColumn id="djxDataGridColumn2"
                        label="Items" field="items" width="auto">
                    </xe:djxDataGridColumn>
                    <xe:djxDataGridColumn id="djxDataGridColumn3"
                        label="Cost" field="cost" width="auto">
                    </xe:djxDataGridColumn>
                    <xe:djxDataGridColumn id="djxDataGridColumn4"
                        label="Total" field="total" width="auto">
                    </xe:djxDataGridColumn>
                </xe:djxDataGrid>
            </xp:panel>

---------编辑7/3/2013 ---------

我将视图移动到与REST服务相同的数据库,但仍然收到“抱歉,发生错误”消息。视图名称是正确的,因为我从列表中选择了viewName。列标题/字段名称也是正确的。

<xe:restService id="restServicePers" pathInfo="persInfo">
                            <xe:this.service>
                                <xe:viewItemFileService defaultColumns="true"
                                    viewName="InvoicePersonnel" var="entryPers">
                                </xe:viewItemFileService>
                            </xe:this.service>
                        </xe:restService>
                        <xe:djxDataGrid id="djxDataGrid1" autoHeight="10"
                            storeComponentId="restServicePers">
                            <xe:djxDataGridColumn id="djxDataGridColumn1"
                                label="Description" field="description" width="auto">
                            </xe:djxDataGridColumn>
                        </xe:djxDataGrid>

我将pathInfo属性添加到R​​EST服务以查看返回的内容并且出现错误:

{
    "code":500,
    "text":"Internal Error",
    "message":"",
    "type":"text",
    "data":"java.lang.NullPointerException\r\n\tat com.ibm.domino.services.rest.das.view.RestViewNavigatorFactory$ViewNavigatorNavigator.getTopLevelEntryCount(RestViewNavigatorFactory.java:565)\r\n\tat com.ibm.domino.services.rest.das.view.RestViewItemFileService.renderServiceJSONGet(RestViewItemFileService.java:263)\r\n\tat com.ibm.domino.services.rest.das.view.RestViewItemFileService.renderService(RestViewItemFileService.java:77)\r\n\tat com.ibm.domino.services.HttpServiceEngine.processRequest(HttpServiceEngine.java:167)\r\n\tat com.ibm.xsp.extlib.component.rest.UIBaseRestService._processAjaxRequest(UIBaseRestService.java:242)\r\n\tat com.ibm.xsp.extlib.component.rest.UIBaseRestService.processAjaxRequest(UIBaseRestService.java:219)\r\n\tat com.ibm.xsp.util.AjaxUtilEx.renderAjaxPartialLifecycle(AjaxUtilEx.java:206)\r\n\tat com.ibm.xsp.webapp.FacesServletEx.renderAjaxPartial(FacesServletEx.java:225)\r\n\tat com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:170)\r\n\tat com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)\r\n\tat com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)\r\n\tat com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)\r\n\tat com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:583)\r\n\tat com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1281)\r\n\tat com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:854)\r\n\tat com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:751)\r\n\tat com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:572)\r\n\tat com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1265)\r\n\tat com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:658)\r\n\tat com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:481)\r\n\tat com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)\r\n\tat com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)\r\n\tat com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)\r\n"
}

1 个答案:

答案 0 :(得分:5)

服务定义中有一个属性databaseName

  • xe:viewItemFileService
  • xe:viewJsonLegacyService
  • xe:viewJsonService
  • xe:viewXmlLegacyService
xe:restService中的

如果它为空,则使用当前数据库,但如果您输入数据库的路径和名称,则使用这些数据库。

视图名称在属性viewName中定义。

        <xe:restService id="restService1">
            <xe:this.service>
                <xe:viewItemFileService
                    databaseName="MyFolder/MyOtherDatabase.nsf"
                    viewName="AllContacts"
                    ...>