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