以编程方式检查 domino 文档中的字段是 Text 还是 TextList - 这可能吗?

Programmatically check if a field in a domino document is a Text or a TextList - is it possible?

我正在尝试实现一种方法,用文档中的所有值替换 Hashmap 中的所有值。

背后的想法是,我遍历从 Document.getItems() 获得的所有 items 并简单地使用 Item.getType() 方法,这样我就可以决定对哪个字段使用哪种类型.

类似的东西:

private void replace(SomeClass model, Document document) {
    Map<String, Object> objectsMap = model.getObjectsMap();

    Vector<Item> items = document.getItems();

    for(Item item : items) {
        if(item.getType() == Item.TEXT) {
            model.add(item.getName(), item.getValueString()); // model.add(...) is basically a Map.put(String key, Object value);
        } else if(item.getType() == Item.AUTHORS) {
            // ...
        } else if(/*...*/) {
            // ...
        }
    }
}

现在我的问题是我无法区分 TextTextList,因为 getType() returns 两者都是 1280。

有没有人已经尝试过类似的东西,或者可以给我一些可能是解决方法的提示?

编辑

关于其中一条评论的想法,在 item.getValues().size() > 1 时使用 TextList,否则使用 Text: 正如评论中提到的问题是,我希望以后也能使用该字段。

例如: 如果我在文档中有一个包含一项的 TextList 字段,并且我会使用上述方法,我会在该字段的 Map 中放置一个字符串。 如果我想向该字段添加更多项目(应该是 Vector,因为最初它是 TextList),我将无法 - 至少不能以直接的方式。

您可以检查 item.getValues() 的大小 - returns 一个 Vector 。如果向量的大小 > 0,则它是一个文本列表。

NotesItems 总是 return 值的向量。 text 和 textList 之间没有区别。但是您可以做什么:获取表单对象并检查字段属性。如果勾选允许多值,那么您可以假定它是作为 textList 而不是文本。 那应该对您的转换决定进行排序。您还可以标记具有多个值但未在字段中设置允许多值的项目 - 代码会做到这一点