Xpages只将第一个字符传递给Agent

时间:2015-05-01 10:32:43

标签: xpages lotusscript

我创建了一个X页面,允许管理员将一个Notes文档(它们是合同)ID输入到编辑框中,然后按一个按钮删除合同。删除调用代理传递合同ID。下面是按钮脚本,然后是代理的相关部分。发生的事情只是第一个字符被传递给代理,即合同ID仅为9MXCB4" 9"正在传递代理消息框将其打印到日志。我在这做错了什么?如果我在消息框后硬编码合同ID,则正确处理合同。 按钮代码 ag = database.getAgent(" DeleteOneContract"); noteid = getComponent(" ContractIDDelete")。getValue() ag.run(noteid) 代理代码的一部分 Dim runAgent作为NotesAgent Dim deleteID As Variant deleteID = runAgent.Parameterdocid MsgBox"输入是" &安培; deleteID '如果取消注释以下行,则会正确处理合同 ' deleteID =" 9MXCB4" '其余的代理过程 .... 请注意,我还尝试了runAgent.Target和runAgent.Query

3 个答案:

答案 0 :(得分:5)

刚刚测试过,当我传递一个有效的NoteID时,代理就可以正常读取它。我不认为你可以通过这种方式将任何其他值传递给代理。

替代方法可能是使用agent.runWithDocumentContext(doc)方法并在将文档发送给代理之前检索文档。

答案 1 :(得分:2)

我认为音符ID参数实际上必须是字符串形式的十六进制数。它不必与数据库中的实际音符ID对齐,但它只能包含0-9和A-F(可能是大小上限)。

答案 2 :(得分:1)

为Jesse和Mark的正确答案添加额外的想法:从AJF的问题我们无法判断Xpage是否绑定到实际的NotesDocument对象,或者它是否是(临时的)独立页面。当然,在这种情况下, agent.runWithDocumentContext 不会起作用。
但除非你有充分的理由使用LotusScript编码执行其余的任务:为什么首先使用代理?为什么不直接使用SSJS代码执行删除?在这个过程的Xpages方面,你很可能必须从SSJS代码开始,这与Mark的例子非常相似,但是为什么不继续用两三个线完成它?
事实上,由于性能问题,我试图避免从我的Xpages驱动的应用程序直接调用代理 ,并且因为我不喜欢我的代码分散在各处。