我想在我正在构建的应用程序中使用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属性添加到REST服务以查看返回的内容并且出现错误:
{
"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"
}
答案 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"
...>