我正在尝试实现一种方法,用文档中的所有值替换 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(/*...*/) {
// ...
}
}
}
现在我的问题是我无法区分 Text
和 TextList
因为 getType()
两者都返回 1280。
有没有人已经尝试过类似的方法,或者可以给我提示什么方法可能是解决方法?
编辑
关于其中一条评论的想法,当 item.getValues().size() > 1
和 Text
时使用 TextList
> 否则:
正如评论中提到的,问题是,我也希望稍后能够使用该字段。
例如:
如果我有一个 TextList
字段,其中包含文档中的一项,并且我将使用上述方法,我会在该字段的 Map
内放置一个字符串。
如果我想向此字段添加更多项目(它应该是一个 Vector,因为最初它是一个 TextList)我将无法 - 至少不能在直接的方式。
最佳答案
NotesItems 始终返回值的 vector 。 text 和textList 之间没有区别。但是您可以做什么:获取表单对象并检查字段属性。如果勾选允许多值,那么您可以假设它是文本列表而不是文本。 这应该可以解决您的转换决定。您还可以标记具有多个值但不允许在字段中设置多值的项目 - 代码就可以做到这一点
关于java - 以编程方式检查 domino 文档中的字段是文本还是文本列表 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53413692/