我创建了一个只有一个元素的Xpage,一个指向视图的JSON Rest服务(我想我可能应该把它放在CC中)。
我想构建另一个带有CC的Xpage,该CC包含一个包含指向此rest服务的Dojo Data Grid的CC。
我该怎么做呢?在我看来,我应该把对数据的调用从接口中分离出来。
正如Knut提到的,xp:include标记(include Page控件)似乎是最简单的解决方案。
但是,您不必将REST服务移动到自定义控件。您可以在包含网格自定义控件(或网格自定义控件本身)的同一页面上包含带有REST服务的页面。然后,在网格控件的网格的storeComponentId属性中,您可以指定REST服务的ID,服务器将能够解析它。
将REST服务放在CC中,并将包含到Dojo Data Grid控件XPages/CC中。
<xp:include
id="restService"
pageName="restServiceCC.xsp" />
别忘了加上"。xsp"到您的CC的名称。
使用include是(唯一)将Dojo Data Grid控件和REST服务分离到单独的XPages/CC中的方法,正如您在问题中所问的那样。由于REST服务可以作为单独的设计元素,因此您可以在模板数据库中定义所有REST服务,并让应用程序从那里继承。REST服务本身可以提供来自任何数据库/视图的数据。
Dojo Data Grid控件是将Data Grid包含到应用程序中的最简单方法,但是它需要REST服务位于数据库本身中。
作为一种选择,你可以使用基于客户端JavaScript的"纯"数据网格。数据网格通常通过Ajax从URL获取数据。这将使您能够将所有REST服务放在一个数据库中。与使用Dojo Data Grid控件相比,使用这种方法具有更大的灵活性。但是,要知道这需要一些时间来适应。我使用基于jQuery的免费jqGrid作为"纯"数据网格。你可以在我在EntwicklerCamp 2014上的演讲中找到更多关于它的信息(对不起,它是德语的-谷歌翻译是你的朋友),包括与Dojo Data Grid和ExtJs Grid的比较。