Xpages 如果IncludePage的数据源相同,如何定义该数据源

Xpages 如果IncludePage的数据源相同,如何定义该数据源,xpages,datasource,Xpages,Datasource,如果我想使用XPage作为子表单,并且使用IncludePage控件,我不知道如何定义数据源或将字段绑定到主XPage的单个数据源 让嵌入式Xpage拥有自己的单独数据源,然后写入单独文档中的字段是很容易的,但是当我执行操作/单击submit按钮时,如何将字段的值保存到当前文档中呢?(即,我没有使用多个数据源) 这是主xpage上的代码: <xp:include pageName="/P1.xsp" id="include2"> </xp:include> 在P1

如果我想使用XPage作为子表单,并且使用IncludePage控件,我不知道如何定义数据源或将字段绑定到主XPage的单个数据源

让嵌入式Xpage拥有自己的单独数据源,然后写入单独文档中的字段是很容易的,但是当我执行操作/单击submit按钮时,如何将字段的值保存到当前文档中呢?(即,我没有使用多个数据源)

这是主xpage上的代码:

<xp:include pageName="/P1.xsp" id="include2">
</xp:include>


在P1 xpage上,我只是不知道如何定义相同的数据源(document1)。

是否有不使用自定义控件的原因?如果您希望所有这些内容都在自己的页面上,只需创建一个XPage并将自定义控件放在其中。如果希望它包含其他内容,请使用其他内容以及自定义控件创建不同的XPage

使用自定义控件,您可以访问层次结构中更高级别的数据源,因此可以从该XPage上的自定义控件访问XPage的数据源。你不能提前打印,但它完全可以使用。因此,在本例中,您将在XPages上使用document1数据源,并在自定义控件上使用document1.myField或document1.save()


它还可以与IncludePage控件一起使用。我不确定IncludePage在如何将其添加到包含的XPage方面是否与自定义控件的工作原理基本相同。

您可以做您想做的事情:将XPage包含在另一个XPage中。那很好

设想一个包含的页面,就像这个页面的内容直接写在主页里面一样。所以,您可以像这样使用document1

value="#{document1.myOtherField}"
将表单字段绑定到主页的document1项

但是,如果不重新加载主页面,则无法在include控件中更改包含的页面。这意味着,根据您的评论,这种方法不适用于您:


我试图让用户回答一系列问题。 所以,他们会回答一个问题,点击“下一页”,回答下一个问题,等等。 每次都会保存/更新文档。 我认为使用xpages作为子窗体并打开它是最简单的 “主”xpage(document1)和下一个/适当的xpage现在可见


相反,创建面板,每个面板包含问题的子集。根据viewScope变量向面板添加渲染条件,在用户单击“下一步/上一步”按钮时更改此viewScope变量,并部分刷新这些面板。这样,一次只能看到一个面板,您不必每次都保存文档。

我想让用户回答一系列问题。因此,他们将回答一个问题,单击“下一页”,回答下一个问题,等等。每次都会保存/更新文档。我认为使用xpages作为子表单并调出“main”xpage(document1)是最容易的,下一个/适当的xpages现在是可见的。你是说使用自定义控件也可以这样做吗?这样做的好处是什么?除了可以轻松访问顶部的xpage/document之外?我只是尝试使用自定义控件,在单选按钮组的“数据”选项卡上,我为Datasource键入“document1”,为BindTo键入“Feed”。当我保存Xpage时,该值不会写入后端文档。我最后做的就是创建带有呈现条件的面板,但是现在您已经解释了如何使用Include页面,可能还不算太晚。否则,这个Xpage可能会在designer中永远滚动。实际上,每次他们单击“继续”并保存数据时,我都希望页面刷新。所以很好。谢谢克努特和保罗的帮助。