0

用户通过旧格式的链接打开文档http://server/db.nsf/VIEW_UNID/DOC_UNID。表单的属性设置为改为打开 XPage。

这些链接的来源是“万能代理”生成的电子邮件通知。它只是将链接发送到文档。它不知道什么表单与什么 XPage 相关联,因此它生成通用链接而不是“/page.xsp&documentId=...”。

问题:在客户端计算的相对链接不起作用 -< a href = "/page.xsp?params">应该更有效 - 没有往返并且在页面加载时易于计算。他们评估为http://server/db.nsf/0/page.xsp?params,自然以错误 404 结尾。

XPage 包含“帮助”部分,什么是另一个具有包含文本、图像和链接的 RT 字段的文档。当从另一个 XPage - 视图 (/page.xsp) 打开 XPage 时,该 RT 字段中的相关链接有效,但从通知链接 (/0/UNID) 重定向时失败。

问题http://server/db.nsf/page.xsp?documentId=DOC_UNID:通过老式 URL 打开重定向的文档/视图后,如何有效地将浏览器的地址栏重置为扩展的 XPages 格式?

4

3 回答 3

1

主要问题是服务器端(在 SSJS 中评估)和客户端(通过浏览器评估)的相对链接存在差异。如果文档由老式链接打开,我已经通过简单的重定向解决了我的问题。

<?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
        <xp:eventHandler event="onClientLoad" submit="false">
            <xp:this.script><![CDATA[var url = "#{javascript:context.getUrl()}";
    var l = window.location;
    if (url != l) {
        window.location.replace(url);
    }
    ]]></xp:this.script>
    </xp:eventHandler>
</xp:view>

简单地说,如果打开的 URL 与内部 URL 不同(由 XSP 引擎解析),浏览器将重定向到正确的 URL。这解决了我们在使用内联图像(图像资源)和附件时遇到的许多问题。

于 2012-07-18T08:19:57.997 回答
0

您是否尝试在 XPage 中设置 pageBaseUrl 属性?这将有助于修复相对链接:

<xp:this.pageBaseUrl>
   <xp:baseUrl>
      <xp:this.href><![CDATA[#{javascript:"http://stackoverflow.com/"}]]></xp:this.href>
   </xp:baseUrl>
</xp:this.pageBaseUrl>

另一个想法是,如果 URL 采用老式样式,则在 XPage中的beforePageLoad事件中进行重定向。

于 2012-06-04T05:38:49.950 回答
0

如果您想回到根目录,请尝试“./page.xsp¶ms”或 ../ - 我注意到 IBM 在他们的编码中也这样做了。希望这可以帮助。

于 2012-05-29T18:49:53.293 回答