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