从字节多值字段创建String []数组

时间:2014-08-12 19:23:52

标签: java arrays xpages

我正在创建一个返回字符串数组的JAVA方法,我的方法如下所示:

public String[] getReaders(String linkKey){
     ...
     String[] rtn  = {thisDoc.getItemValue("WFSOriginator")[0] , thisDoc.getItemValue("WFSReadDraftName")};
     return rtn;
}

现在字段WFSOriginator是一个单值字段,所以我可以在getItemValue中获取第一个值,但是,WFSReadDraftName可以为null,单个值或其中有多个名称。我得到的错误无法将向量转换为字符串。那么我是否必须遍历WFSReadDraftName中的值并首先将它们存储在数组中?

此外,是否有一种简单的方法来制作阵列。我可以遍历列表并将它们放入hashMap以确保唯一性,但这似乎有点过分。

2 个答案:

答案 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);