【问题标题】:XPages setfield from view selection来自视图选择的 XPages setfield
【发布时间】:2014-12-12 16:47:43
【问题描述】:

我有一个带有按钮的重复控件来选择或取消选择各种文档 - 这很有效,我可以通过文档 ID 识别每个选定的文档。我有另一个带有以下 SSJS 的按钮。对于选择的文档,我想在基础文档中设置一个字段。如果我执行简单的 doc.removePermanently(true)...,则此脚本有效,但如果我尝试操作所选文档的公共字段值,则此脚本无效。我收到错误 500 HTTP Web 服务器:命令未处理异常。这样做的正确方法是什么?

var docsForAction = sessionScope.get("myList");
var doc:NotesDocument;
for(i=0; i < docsForAction.length; i++){
    doc = database.getDocumentByUNID(docsForAction[i]);
    doc.setValue("Level","10");
    }
docsForAction = [];
viewScope.put("myList", docsForAction);
context.reloadPage();   

【问题讨论】:

  • 您没有通过 doc.save() 保存更改;
  • 我删除了 doc.save();在测试中......但有或没有相同的错误。
  • 尝试使用doc.replaceItemValue("fld", "val") 而不是doc.setValue()。不要认为 NotesDocument 中存在该方法。
  • 遵循 Marks 的建议。还要确保使用 XPages Log File Reader 来轻松访问您的 XPages 错误日志。它们包含有关您的错误的更多详细信息。
  • 谢谢... doc.replaceItemValue("Level", "10") 代替了 doc.setValue()。

标签: xpages xpages-ssjs


【解决方案1】:

您可能会收到错误 500,因为您没有定义错误页面。转到 Xsp 属性并勾选“显示默认错误页面”。然后你会看到一个更有意义的错误页面。

您将看到的错误可能出现在 setValue() 行,消息为“null”。这是因为 setValue() 不是 NotesDocument 的方法,它是 dominoDocument 数据源的方法(“NotesUIDocument”XPages 等价物,如果您知道 LotusScript)。

转换变量(添加“:NotesDocument”)很好,因为它允许您利用 SSJS 编辑器或源代码窗格中的预输入支持。这将为您提供有效方法列表和所采用的有效参数类型。

【讨论】:

  • 感谢 Paul 的建议……都非常有帮助。使用方法 replaceItemValue("field","value") 解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多