【问题标题】:xpages go to a previous principal xpagexpages 转到上一个主体 xpage
【发布时间】:2014-08-14 20:22:20
【问题描述】:

我的场景:

有一个导航器,有一些链接将用户重定向到一些.xsp。那些.xsp 包含一些列出某些文档的视图。用户可以使用以下方法创建新文档:

<xp:this.action>
                <xp:openPage name="/doc.xsp" target="newDocument"></xp:openPage>
</xp:this.action>

在此文档中,他们可以创建其他文档。 (声明了其他数据源)在&lt;xe:dialog&gt; 内。它只有一个save and close 按钮,它将我重定向到当前文档。如果我从那里打开对话框,或者它会将我定向到上述.xsp

问题:如果我创建一个新文档。从它的内部,我从对话框中创建了一些文档,使用我的Save 按钮,我必须点击它 2 次(在大多数情况下)才能将我重定向到上述.xsp。为什么?因为在这种情况下,我想要的目标 .xsp 不是 PreviousPage,而是 PreviousPreviousPage,PreviousPage 是 doc.xsp?action=newDocument 而当前页面是 doc.xsp?documentId=E1141A490316FD88C2257D3400322723&action=openDocument,考虑到 doc .已保存以打开对话框,并通过保存和关闭按钮将用户重定向回主文档。

<xp:button value="Save" id="buttonSave" styleClass="lotusFormButton"
                    rendered="#{javascript:currentDocument.isEditable()}">
                    <xp:eventHandler event="onclick" submit="true"
                        refreshMode="partial" immediate="false" save="false"
                        id="eventHandler1">
                        <xp:this.action>
                            <xp:actionGroup>
                                    <xp:saveDocument var="Cdoc"></xp:saveDocument>
                                <xp:openPage name="$$PreviousPage"></xp:openPage>
                            </xp:actionGroup>
                        </xp:this.action></xp:eventHandler>
        </xp:button>

我该如何解决这个问题?

【问题讨论】:

    标签: xpages


    【解决方案1】:

    我找到了这个解决方案,就我而言,它似乎是最有用的。

    Return-to-last-view

    您只需将页面名称记录在范围变量中(当您打开视图时 - 在我的情况下是包含该视图的主体 Xpage),然后从 Save 按钮返回到最后打开的视图(包含在 xpage 中)。

    【讨论】:

      【解决方案2】:

      希望我做对了:

      您可能想看看“导航规则”。您的保存按钮,例如可以返回一个 SSJS 值:

      return "home"
      

      其中'home' 是您的规则的名称,将您引导至您的 index.xsp。 因此,无论您在使用 doc.xsp 时做了什么,打开了多少对话框,如果您单击使用 nav 规则的此按钮,它将带您进入页面。您使用了 $$PreviousPage 占位符,它只是生成了一个简单的 CSJS

      history.go(-1)
      

      这会让你陷入现在面临的困境。

      【讨论】:

      【解决方案3】:

      假设 xe:dialog 的 id 为 dialog1,请尝试将对话框中保存按钮的代码替换为以下代码:

       <xp:button value="Save" id="buttonSave" styleClass="lotusFormButton"
                      rendered="#{javascript:currentDocument.isEditable()}">
          <xp:eventHandler event="onclick" submit="true" refreshMode="complete">
                  <xp:this.action><![CDATA[#{javascript:
                       Cdoc.save();
                       var c = getComponent("dialog1");
                       c.hide("refreshPanel1");
                  }]]></xp:this.action>
          </xp:eventHandler>
       </xp:button>
      

      传递给 hide 方法的可选“refreshPanel1”是 XPage 上包含元素的 id,用于在对话框关闭时执行部分刷新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多