在我的应用程序中,我已将对象的属性定义为LinkedHashSet。我用来自多值字段的值填充的属性:

Vector<String> ctrs = doc.getItemValue("countries");
LinkedHashSet<String> items = new LinkedHashSet<String>();
for (int i = 0; i < ctrs.size(); i++){
    items.add(ctrs.get(i));
}
employee.setCountry(items);


在XPage上,我想显示如下值:

<xp:inputText id="inputCountries" value="#{employeeBean.employee.Country}">
    <xp:this.multipleSeparator><![CDATA[#{javascript:var val = getComponent("contractType").getValue();
if (val == "Multi"){
    return ",";
}}]]></xp:this.multipleSeparator>
</xp:inputText>


根据员工的类型,此字段可以是单值或多值。

查看XPage时,返回值显示如下:

[瑞典,丹麦,爱沙尼亚]

当然,我希望它显示为多值。我该怎么做才能纠正这个问题?

最佳答案

如果将HashSet转换为Array,则应该可以使用

下面是一个示例,第一个作为单值/第二个作为多值字段:

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:inputText id="singleValue" multipleSeparator=",">
        <xp:this.value><![CDATA[#{javascript:var items:java.util.Set = new java.util.LinkedHashSet();
items.add("Sweden");
return items.toArray();}]]>
        </xp:this.value>
    </xp:inputText>

    <br></br>
    <br></br>

    <xp:inputText id="multiValue" multipleSeparator=",">
        <xp:this.value><![CDATA[#{javascript:var items:java.util.Set = new java.util.LinkedHashSet();
items.add("Sweden");
items.add("Denmark");
items.add("Estonia");
return items.toArray();}]]>
        </xp:this.value>
    </xp:inputText>

</xp:view>


浏览器上的输出如下所示:

Sweden

Sweden,Denmark,Estonia

10-06 08:54