如果我想使用XPage作为子表单,并且我使用IncludePage控件,我不知道如何定义数据源或将字段绑定到主XPage的单个数据源。
很容易让嵌入式Xpage拥有自己独立的数据源然后写入单独文档中的字段,但是当我采取操作/单击提交按钮时,如何将字段值保存到当前文档? (即我没有使用多个数据源)
这是主xpage上的代码:
<xp:include pageName="/P1.xsp" id="include2">
</xp:include>
在P1 xpage上我只是不知道如何定义数据源(document1)。
答案 0 :(得分:0)
是否有理由不使用自定义控件?如果您想在自己的页面上显示所有内容,只需创建一个XPage并在其上只放置自定义控件。如果您想要其他内容,请使用其他内容和自定义控件创建不同的XPage。
使用自定义控件,您可以访问位于更高层次结构中的数据源,因此可以从该XPage上的自定义控件访问XPage的数据源。您没有获得预先输入,但它完全有效。因此,在这种情况下,您将在XPage上拥有document1数据源,并在自定义控件上使用document1.myField或document1.save()。
它也可以与IncludePage控件一起使用。我不确定IncludePage是否与自定义控件基本相同,如何将其添加到包含XPage。
答案 1 :(得分:0)
你可以做你想做的事:包括另一个XPage。这很好。
想想一个包含的页面,就像这个页面的内容将直接写在主页面内。所以,您可以像使用
这样的document1value="#{document1.myOtherField}"
将表单字段绑定到主页的document1项目。
但是,如果不重新加载主页,则无法在include控件中更改包含的页面。这意味着,根据您的评论,这种方法对您不起作用:
我要做的是让用户回答一系列问题。 所以,他们会回答一个,点击“下一页”,回答下一个,等等。 它每次都会保存/更新文档。 我认为最简单的方法是使用xpages作为子表单并拉起来 现在可以看到带有next /相应xpages的“main”xpage(document1)。
相反,请创建面板,每个面板包含一部分问题。基于viewScope变量向面板添加渲染条件,当用户单击下一个/上一个按钮并部分刷新这些面板时,更改此viewScope变量。这样,一次只能看到一个面板,并且您不需要每次都保存文档。