【问题标题】:xpages save / cancel actions scenarioxpages 保存/取消操作场景
【发布时间】:2014-06-25 16:15:07
【问题描述】:

我将简要描述我的小项目应用程序:

主文档。内容是Cdoc(包含字段+按钮的数据源)。这个按钮显示一个对话框,它是Pdoc(一个数据源)——在显示按钮之前,我将保存文档。获取UNID,然后将其传递给Pdoc,我想将CdocPdoc与UNID链接。 我的显示对话框的按钮:

<xp:button value="Adding Pdoc from the dialog" id="button3"
        styleClass="lotusFormButton" refreshMode="partial">

        <xp:eventHandler event="onclick" submit="true"
            refreshMode="partial" refreshId="computedField3">
            <xp:this.action><![CDATA[#{javascript: if ( Cdoc.isNewNote() ) { Cdoc.save(); }
Cdoc.setValue("computedField3",Cdoc.getDocument().getUniversalID());
getComponent('exampleDialog').show()}]]></xp:this.action>
        </xp:eventHandler>

对话框/Pdoc 仅包含 1 个按钮:Save(因为 X 按钮已隐式添加到对话框中)

<xp:button value="Salvare" id="button6" styleClass="lotusFormButton">

<xp:eventHandler event="onclick"
    submit="true" refreshMode="partial" immediate="false"
    save="false" refreshId="viewPanel1">
        <xp:this.action><![CDATA[#{javascript:Pdoc.save();     
getComponent('exampleDialog').hide();
   }]]>
           </xp:this.action>
</xp:eventHandler>

所以,它保存了文档。来自Pdoc,它们显示在来自Cdoc的嵌入视图中。

主要。 doc Cdoc 还包含 2 个(操作)按钮:

Cancel: redirect to Previous Page.

Save
<xp:button value="Salvare" id="buttonSave" styleClass="lotusFormButton" rendered="#{javascript:currentDocument.isEditable()}">

            <xp:eventHandler event="onclick" submit="true"
                refreshMode="partial" immediate="false" save="true"
                id="eventHandler1">
                <xp:this.action><![CDATA[#{javascript:if (Cdoc.getItemValueString("txt_UNID")!= "") { 

Cdoc.save(); 
}
facesContext.getExternalContext().redirect("http://ourserver.ro/XApp.nsf/view.xsp")

}]]></xp:this.action>
            </xp:eventHandler>
</xp:button>

问题是:

假设我将创建 3 个文档。来自Pdoc 来自对话框,Cdoc。已保存(因为已获得 UNID)。如果我保存然后使用Cdoc Save, 我来自view.xsp 的主视图面板将显示:

  • 一个文档。 Cdoc 及其 3 个 Pdoc 文档。 (我只需要展示这个案例)

  • 另一个Cdoc(我想当我第一次获得UNID并保存Cdoc以获得UNID时,在这种情况下这是Cdoc。顺便说一句,如果我再次保存Cdoc使用Save按钮,UNID会改变吗?)和一个空的(不知道为什么)Pdoc来自对话框。

来自CdocSave 按钮应该是什么样的?我是否也应该将 SavePdoc 按钮更改?

感谢您的宝贵时间。

【问题讨论】:

  • 我的 Cdoc:

标签: xpages xpages-ssjs


【解决方案1】:

我相信按钮上的 save="true" 将提交并保存页面上的所有数据源。这可以解释虚假的 Pdoc 文档。您正在调用脚本中的保存,因此您不需要 save="true" - 您可以只使用普通的 Button 类型而不是按钮的 Submit 类型。

文档保存后,UNID 将不会更改。

【讨论】:

  • 谢谢它现在似乎可以工作了,但是关于我的显示对话框的按钮的一个问题:如果我打开一个现有的 CDoc(已经保存)然后添加一个新的 Pdoc(从对话框中,使用button ) 单击按钮时,包含 UNID 的计算文本正在更改。我的按钮代码: if ( Cdoc.isNewNote() ) { Cdoc.save(); } Cdoc.setValue("computedField3",Cdoc.getDocument().getUniversalID()); getComponent('exampleDialog').show()
  • 您的 Cdoc 是否与上述评论中的完全一致?如果是这样,您将在 Cdoc 上设置 ignoreRequestParams 而根本没有设置 documentId 属性。这意味着无论您是从视图中打开文档还是创建新文档,Cdoc 都将始终是一个新文档。因此,UNID 会发生变化也就不足为奇了。我建议查看 dominoDocument 数据源,可能是 Mastering XPages 2nd Edition 第 7 章开头的部分
  • 我确实在 2 个月前订购了 Mastering XPages,这周我收到了回复说它将于本周到货。我还在等它。那么,我应该将 ignoreRequestParams 设置为 false 吗?我的按钮代码是: if ( Cdoc.isNewNote() ) { Cdoc.save(); Cdoc.setValue("computedField3",Cdoc.getDocument().getUniversalID()); getComponent('exampleDialog').show() } else { Cdoc.setValue("computedField3",Cdoc.getDocument().getUniversalID()); getComponent('exampleDialog').show()}.
  • 是的,使用默认的 ignoreRequestParams="false"。祝掌握 XPages 好运。它的大小看起来令人望而生畏,但内容丰富。
猜你喜欢
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 2015-05-09
相关资源
最近更新 更多