UISelectMany值应该是数组或集合类型,实际类型是java.lang.String

时间:2014-07-23 12:06:23

标签: jsf

我有一个填充了List的selectmanylistbox,当我尝试提交表单时,我得到了错误"Target model Type is no a Collection or Array"(以及控制台中的"The UISelectMany value should be an array or a collection type, the actual type is java.lang.String",尽管我正在使用集合...

非常感谢您的帮助

jsf页面:

<td>People list</td>
<td>
    <h:selectManyListbox value=" #{people.selectedPeople}" size="3">
        <f:selectItems value="#{people.peopleList}"/>
    </h:selectManyListbox>
</td>

我的托管bean

@ManagedBean(name="people")
@RequestScoped

public class People implements Serializable {
    private static final long serialVersionUID = 1L;

    private List<String> peopleList;
    private List<String> selectedPeople;


    public People(){        
        peopleList = Arrays.asList("one", "two", "three", "four", "five");
    }

    // getters , setters
}

1 个答案:

答案 0 :(得分:3)

在你的<h:selectManyListbox>中,你的值应该是一个字符串数组。由于一些奇怪的原因,JSF不喜欢使用Lists。我知道这一点,因为前几天我在PrimeFaces中遇到了<p:selectManyCheckbox>类似的问题。

如果您从private List<String> selectedPeople;更改为private String[] selectedPeople;(并根据需要更改getter和setter),它应该可以正常工作。

编辑:如果不这样做,我只是注意到value=" #{people.selectedPeople}"中有空格,这也可能是问题的一部分。