XPages form won';如果保存按钮位于xe:对话框中,则不保存字段值

XPages form won';如果保存按钮位于xe:对话框中,则不保存字段值,xpages,xpages-ssjs,xpages-extlib,Xpages,Xpages Ssjs,Xpages Extlib,我有一个带有两个自定义控件的Xpage,其中包含绑定到Xpage上单个数据源的可编辑字段。在Xpage上,我使用一个xe:对话框,其中包含一个按钮来保存数据源document1(使用SSJS)。尚未进行任何验证。我使用xe:dialogButtonBar调用xe:dialog(使用CSJS),该对话框打开良好,然后单击包含操作Save Document data source的OK按钮 diablogButtonBar onClick调用打开对话框 XSP.openDialog("#{id:di

我有一个带有两个自定义控件的Xpage,其中包含绑定到Xpage上单个数据源的可编辑字段。在Xpage上,我使用一个xe:对话框,其中包含一个按钮来保存数据源document1(使用SSJS)。尚未进行任何验证。我使用xe:dialogButtonBar调用xe:dialog(使用CSJS),该对话框打开良好,然后单击包含操作Save Document data source的OK按钮

diablogButtonBar onClick调用打开对话框

XSP.openDialog("#{id:dialogSaveAsDraft}");
使用此配置,将保存文档,但不会创建可编辑字段,也不会保存数据。Xpage设置了以下两个属性:computeWithForm:onsave、action:editDocument,但也尝试了createDocument

这里是一个转折点:如果我在xe:对话框中选择按钮并将其放置在xe:对话框之外,按钮就会工作,Xpage和所有可编辑字段都会正确保存

我错过了什么?我以前做过几乎完全相同的事情,但没有使用xe:dialogButtonBar,而是使用了一系列按钮。我想使用xe:dialogButton栏来组织UI


有人能解释为什么会发生这种情况吗?

如果使用ComputeWithForm,则必须有一个DisplayErrors控件。此时将显示验证错误消息。有吗?如果不是,您可能会从表单上的公式中得到验证错误,并且它们没有显示错误消息的位置。顺便说一下,使用ComputeWithForm并不是一件好事。您应该直接在XPage上重复验证逻辑。否则,您会遇到太多的问题,验证/转换会在XPage级别进行,而在表单级别又会发生。

问题在于表单提交。启动对话框时,不会提交页面其他部分的可编辑字段(部分刷新时启动对话框)。因此,后端组件树不知道客户端的字段更新

您可以从SSJS打开对话框(这样它就提交了页面),也可以使用
onComplete
脚本创建“noupdate”提交来启动对话框



我还没有做任何验证。在将Notes逻辑转换为SSJS或CSJS之前,我想让基本功能正常工作。我只是保存输入的任何值。我确实有一个Messages控件,但它没有显示,因为没有错误。文档保存时包含两个包含硬编码值的字段,但任何可编辑字段都不是文档的一部分。谢谢,这正是我所担心的。看起来我无法使用您建议的xe:dropDownButton方法。它不喜欢onComplete属性,看起来是纯CSJ。我需要找到一个不同的方法,或者只使用表单顶部的一串按钮/链接。您可以使用它。使用submit value和onItemClick事件代替CSJS。根据提交值,您可以使用SSJS启动任何对话框。(您可以使用
context.getSubmittedValue()