我从xpage的PostSave事件中调用了一个lotusscript代理(取自IBM Wiki模板)。我想添加一些错误捕获,所以如果发生了什么事情(我有#34;附件丢失的情况......运行压缩以解决这个问题"错误),应用程序至少会警告用户出现了问题。
我是否需要将错误捕获代码放入代理?它是否属于xpages的PostSave事件?
以这种方式调用代理:
<xp:this.data>
<xp:dominoDocument var="pageDocument" formName="fPage"
action="openDocument" ignoreRequestParams="false"
computeWithForm="onsave">
<xp:this.postSaveDocument><![CDATA[#{javascript:var agent = database.getAgent("XPSavePage");
agent.runOnServer(pageDocument.getDocument().getNoteID());}]]>
</xp:this.postSaveDocument>
</xp:dominoDocument>
<xp:this.data>
代理工作得很好,但在某些文档中,由于某些转换错误和其他情况(最常见的是与persitence相关),我们确实有错误的附件错误。但是我不清楚如果在Lotus Script代理中发生错误时如何捕获...
答案 0 :(得分:3)
我建议使用方法:
剂的 runWithDocumentContext 强>(DOC)。 //&lt;&lt; SSJS
然后在代理中,您可以使用上次更改来更新文档:
设置doc = ses.documentContext&#39; &LT;&LT; LS
其他选项是使用DocumentDataSource的 webQuerySaveAgent 属性
答案 1 :(得分:2)
代理对调用环境具有ZERO可见性,缺少DocumentContext。 因此,您需要将任何状态写回文档并在XPage中检查该值。 如果您需要非常谨慎,请将状态设置为“AgentFailed”,然后让代理使用“成功”或更具体的错误更新它。这样,您可以捕获代理无法写回文档的错误。
当您使用它时:通过取消代理运行时的开始来改进应用程序的响应时间 - 在bean中编写代码。 SessionAsSigner为您提供了可能需要的提升权限