以编程方式检查多米诺骨牌文档中的字段是Text还是TextList-可以吗?

时间:2018-11-21 13:57:33

标签: java xpages lotus-notes document lotus-domino

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

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

类似的东西:

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()都返回1280。

有没有人尝试过类似的方法,或者可以给我提示什么方法可能是解决方法?

编辑

关于其中一项注释的想法,在TextListitem.getValues().size() > 1时使用Text,否则: 如评论中所述,问题是,我希望以后也能使用该字段。

例如: 如果我的文档中有一个TextList字段,并且有一个项目,并且我将使用上述方法,那么我将在Map内的该字段中放置一个字符串。 如果我想在此字段中添加更多项(由于原来是Vector,因此应为TextList),我将无法这样做-至少不是简单的方法。

2 个答案:

答案 0 :(得分:1)

NotesItems总是返回一个向量的值。 text和textList之间没有区别。但是,您可以执行以下操作:获取表单对象并检查字段属性。如果勾选了“允许多值”,则可以将其作为textList而不是text。 那应该对您的转换决定进行排序。您还可以标记多个值,而该字段中不允许设置多个值的项目-代码会做到这一点

答案 1 :(得分:0)

您可以检查item.getValues()的大小-返回Vector。如果向量的大小> 0,则为textilst。