我正在尝试实现一种将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(/*...*/) {
// ...
}
}
}
现在我的问题是我无法区分Text
和TextList
,因为getType()
都返回1280。
有没有人尝试过类似的方法,或者可以给我提示什么方法可能是解决方法?
编辑
关于其中一项注释的想法,在TextList
和item.getValues().size() > 1
时使用Text
,否则:
如评论中所述,问题是,我希望以后也能使用该字段。
例如:
如果我的文档中有一个TextList
字段,并且有一个项目,并且我将使用上述方法,那么我将在Map
内的该字段中放置一个字符串。
如果我想在此字段中添加更多项(由于原来是Vector
,因此应为TextList
),我将无法这样做-至少不是简单的方法。>
答案 0 :(得分:1)
NotesItems总是返回一个向量的值。 text和textList之间没有区别。但是,您可以执行以下操作:获取表单对象并检查字段属性。如果勾选了“允许多值”,则可以将其作为textList而不是text。 那应该对您的转换决定进行排序。您还可以标记多个值,而该字段中不允许设置多个值的项目-代码会做到这一点
答案 1 :(得分:0)
您可以检查item.getValues()的大小-返回Vector。如果向量的大小> 0,则为textilst。