【问题标题】:Opened new document in xpinc. How to close window or redirect to parent document?在 xpinc 中打开新文档。如何关闭窗口或重定向到父文档?
【发布时间】:2012-06-27 02:37:36
【问题描述】:

我正在一个大型经典笔记应用程序中对表单进行 XPage 处理,并且我正在努力寻找一种方法来结束与呈现良好 UI 的表单的交互。这是我的场景:

1) 从视图中打开父文档(经典笔记) 2) 父文档上的按钮使用 notes:/// 链接在 XPiNC 中打开子文档。 3) 子文档 XPage 上的取消按钮......

我尝试了以下方法:

a) 使用 window.close() 我在这方面做了很多谷歌搜索,各种方法似乎对我不起作用。如果您从使用 window.open 打开的窗口调用它,window.close() 应该可以工作,所以我尝试了 window.open("closeMe.xsp", "_self") 看看这是否会给我一个窗口可以在 onClientLoad 客户端事件中由带有 window.close() 的 xpage 关闭。那里没有运气。以下问题提出建议但不提供解决方案(第三方产品除外)

How do I close my window in Xpage? How to close xpages in notes client? I use CSJS window.close but it's not working

b) 重定向到父文档 我的下一个想法是重定向到父文档——它已经在 Notes 客户端中打开了。但是,我发现当我重定向时(使用 facesContext.getExternalContext().redirect("Notes:///url" )它确实会跳转到父文档,但它会在 XPage 所在的选项卡中打开一个空白窗口.

我的下一个尝试是关闭原始调用 LotusScript 中的父级,然后在取消按钮中重定向到父级。这也有效 - 您可以访问父文档,但是如果您按下退出键或关闭父文档的选项卡,它会再次为您留下一个空窗口。

有什么想法吗?我喜欢能够返回到新打开的父文档的想法,因为我可以期望我的新子文档会刷新嵌入式视图,但目前我会采取任何有效的方法。 :)

干杯,

布伦丹

【问题讨论】:

    标签: xpages xpinc


    【解决方案1】:

    你被困在岩石和坚硬的地方之间。 XPiNC 和经典Notes 不会那么容易混合。但有希望。前往Composite Application Wiki。在那里你会发现你可以打开一个composite instead of a document,它允许你在一个合成中拥有标签和东西。

    这也是经典应用程序和 XPage(使用属性代理发布/订阅)交换数据的方式。确保你也阅读了 cmets。 Karsten 有很好的进一步链接。

    我没有具体的工作示例来说明您想要做什么,但 Composite 感觉是您拥有的最佳选择。

    【讨论】:

    • Brendan,你也可以看看之前关于同一主题的答案:stackoverflow.com/search?q=%5Bxpages%5D+window.close
    • 谢谢 Stephan,但我认为这增加了我希望避免的复杂程度 - 对我来说更好的解决方案可能是进一步转向 XPages 或在浏览器中打开。
    • 谢谢 Per,我已经阅读了其中的两本,但第三本(带有您的 cmets 和代码)以某种方式逃脱了我的注意。我仍然无法让它工作。在原始注释表单中,我已将按钮更改为客户端 javascript,认为这可能会有所帮助。我将通过我的笔记表单上的按钮使用 window.open(url) 。在打开的 XPage 中,我有一个带有 window.close() 的按钮,但它没有关闭窗口。
    【解决方案2】:

    我找到了部分解决方案,Java 是你的朋友。它适用于按钮也应该适用于链接。唯一的问题是当从像 onClose 这样的事件调用时,当前 xpage 失去焦点并且当前页面保持打开状态。我试图模拟发送键,它按下了 ESC 键。它可以从一个按钮中正常工作。 点击事件上的按钮

    <xp:button value="Label" id="button1">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:var robot:java.awt.Robot= new java.awt.Robot;var event:java.awt.event.KeyEvent=java.awt.event.KeyEvent;
    

    robot.keyPress(event.VK_ESCAPE); 机器人.keyRelease(event.VK_ESCAPE); enter code here}]]>

        </xp:eventHandler>
    </xp:button>
    

    【讨论】:

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