【问题标题】:Domino Document cannot be opened twice on public access xpageDomino 文档无法在公共访问 xpage 上打开两次
【发布时间】:2020-09-15 11:56:39
【问题描述】:

我有一个 Xpage,其访问权限设置为公开,供客户填写表格。当我向客户发送页面链接并且他们第一次打开它时。一切运行顺利。但是,如果他们关闭浏览器并再次单击链接,他们会收到此错误:

{意外的运行时错误

运行时遇到意外错误。

错误来源

页面名称:/xpClientForm.xsp

例外

无法打开文档

通用 ID 无效}

我使用 switch facet 在表单之间循环,具体取决于客户端类型。 domino 文档 ID 存储在 sessionScope beforepageload 中,文档根据 sessionScope 变量动态计算它。

代码如下:

页面加载前的 SessionScope 分配

var cData = getClientData(id);
sessionScope.docId = cData.docID;

文档数据源

<xp:panel style="height:100px" id="pnlDocData">
                    <xp:this.data>
                        <xp:dominoDocument var="document1"
                            formName="frmA" action="editDocument"
                            documentId="#{javascript:sessionScope.docID;}" scope="request">
                    </xp:this.data>
</xp:panel>

但是,当我在没有公共访问权限的页面上执行此自定义控件时。无论我打开链接多少次,它都能正常运行。

任何帮助将不胜感激。

【问题讨论】:

  • 通用id是怎么计算的?
  • 在单独的 xpage 上创建文档时。通用 ID 保存到该客户端名称下的 sql 表中。发送给客户端的链接具有该表行的唯一 ID,该行被解析为 url 参数。然后我使用该参数进行 sql 调用并获取保存的通用 ID。
  • 错误提示:无效的通用 ID。你确定通用ID是正确的吗?在你的 beforepageload 事件中打印出来并检查。
  • 已经打印出来了。一切都是正确的。将其缩小到公共访问用户对多米诺文档的安全访问。但不知道如何绕过这个。已将所有文档提供给公共访问用户。还尝试了 Tawmess 在This Question 上的答案。这在我直接调用 getDocumentByUNID() 时有效,但在我计算上面看到的值时无效。 @PerHenrikLausten。
  • 答案由@Tawmess 在This Question 上找到。

标签: xpages lotus-notes xpages-ssjs


【解决方案1】:

您需要在 dominoDocument 数据源上设置ignoreRequestParams="true"。否则,它会使用 URL 中的文档 ID 或尝试创建新文档,而用户可能无权执行此操作。

计算文档 ID 是不太常见的场景,默认使用 URL 作为文档位置。

【讨论】:

  • 我已经尝试过了,但我仍然遇到同样的错误。没有文档 ID 解析到 url。这一切都来自一个sql表。仅解析客户端 ID,用于进行 sql 调用以获取客户端信息以确保打开正确的页面和文档
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 2017-09-20
  • 2016-02-13
  • 2018-07-29
相关资源
最近更新 更多