我正在创建一个返回字符串数组的JAVA方法,我的方法如下所示:
public String[] getReaders(String linkKey){
...
String[] rtn = {thisDoc.getItemValue("WFSOriginator")[0] , thisDoc.getItemValue("WFSReadDraftName")};
return rtn;
}
现在字段WFSOriginator是一个单值字段,所以我可以在getItemValue中获取第一个值,但是,WFSReadDraftName可以为null,单个值或其中有多个名称。我得到的错误无法将向量转换为字符串。那么我是否必须遍历WFSReadDraftName中的值并首先将它们存储在数组中?
此外,是否有一种简单的方法来制作阵列。我可以遍历列表并将它们放入hashMap以确保唯一性,但这似乎有点过分。
答案 0 :(得分:1)
只需使用List
s:
List<String> rtn = new ArrayList<>();
rtn.add(thisDoc.getItemValue("WFSOriginator").get(0));
Vector<String> vector = thisDoc.getItemValue("WFSReadDraftName");
if (vector != null)
rtn.addAll(vector);
return rtn.toArray(new String[rtn.size()]);
答案 1 :(得分:0)
比尔, 如果你还没有看过这篇帖子:http://dontpanic82.blogspot.com/2012/06/multi-value-fields-and-beans-in-xpages.html有关于Java Bean和多值字段的良好信息。
这里的信息是我目前在我的bean中用于处理多值的代码PIECES。请注意,我使用的是OpenNTF API,这使得事情变得更容易。
我正在使用的多值字段称为&#34; categoryAdmins&#34;。
再次 - 由于您目前没有使用API,因此博客文章可能会更受关注。
祝你好运。 戴夫private List<String> categoryAdmins;
this.categoryAdmins = new ArrayList<String>();
/**
* Get the Multi-Value Field Category Admins
*
* @return
*/
public Object getCategoryAdmins() {
if (null == this.categoryAdmins) {
this.categoryAdmins = new ArrayList<String>();
}
return this.categoryAdmins;
}
/**
* Translate the Category Admins to a Vector for saving back to Multi-Value
* Field
*
* @param inputMulti
*/
public void setCategoryAdmins(Object inputMulti) {
this.categoryAdmins = UtilStrings.getVectorizedStrings(inputMulti);
}
// Load from document - Note Using OpenNTF API
this.categoryAdmins = lookupDoc.getItemValue("categoryAdmins", ArrayList.class);
// Save back to document
lookupDoc.replaceItemValue("categoryAdmins", this.categoryAdmins);