Reputation: 1000
I would like to use the Dojo Data Grid/REST service architecture in an application I am building. However, I cannot find the property (or code) to have the REST service point to a view in another application outside the current one.
Can I use a Data Context in the view name of the REST Service? Or is there another property to set to point to a view in another application?
Thanks -- appreciate your help!
--------- EDIT 6/24/2013 ---------
I have tried both the viewItemFileService and viewJSONService and I can only get the viewJSONService to work with the other database. The viewItemFileService just displays "Sorry, an error has occurred" where the rows of data should be. Here is the code -- I am not sure where I am making the mistake:
<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>
--------- EDIT 7/3/2013 ---------
I moved the view to the same database as the REST service and still received "Sorry, an error occurred" message. The view name is correct since I selected the viewName from the list. The column title/field name is correct also.
<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>
I added the pathInfo property to the REST service to see what is being returned and there was an error:
{
"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"
}
Upvotes: 2
Views: 1589
Reputation: 30960
There is a property databaseName
in service definitions
xe:viewItemFileService
xe:viewJsonLegacyService
xe:viewJsonService
xe:viewXmlLegacyService
in xe:restService
.
If it's empty then the current database is used but if you put in path and name of a database then those database is used.
The view name is defined in property viewName
.
<xe:restService id="restService1">
<xe:this.service>
<xe:viewItemFileService
databaseName="MyFolder/MyOtherDatabase.nsf"
viewName="AllContacts"
...>
Upvotes: 5