java - 以编程方式检查 domino 文档中的字段是文本还是文本列表 - 可能吗?

标签 java xpages lotus-notes document lotus-domino

我正在尝试实现一种方法,用文档中的所有值替换 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() 两者都返回 1280。

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

编辑

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

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

最佳答案

NotesItems 始终返回值的 vector 。 text 和textList 之间没有区别。但是您可以做什么:获取表单对象并检查字段属性。如果勾选允许多值,那么您可以假设它是文本列表而不是文本。 这应该可以解决您的转换决定。您还可以标记具有多个值但不允许在字段中设置多值的项目 - 代码就可以做到这一点

关于java - 以编程方式检查 domino 文档中的字段是文本还是文本列表 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53413692/

相关文章:

java - Spring MVC中的@Controller注解和 Controller 类

javascript - 测试 XPages 中用户/系统 DSN 是否存在

xpages - 加载 javascript 库但没有返回对象

java - protected "stub"方法仅用于覆盖目的是否被视为良好做法?

java - 异步任务出错

java - 使用 Activity 的 android 在 sql 上保存实际上并没有保存

javabeans - 将 inputRichText 绑定(bind)到 Bean

lotus-notes - 使用 EmbeddedObject 从 lotus notes api 中提取附件,在系统文件夹中创建 eo*tm 文件

java - 如何从 Lotus Notes Java 代理检查浏览器版本/名称?

c# - 如果您的计算机上未安装Lotus Notes,如何访问 "nsf file"?