javax.faces.FacesException: значение должно быть массивом или коллекцией

Я получаю ошибку:

javax.faces.FacesException: значение 'frmrapport:type' должно быть массивом или коллекцией

из файла XHTML:

<p:selectManyMenu id="type" required="true"
        value="#{userReporting.getTypeParId(userReporting.selected)[0].nomType}">
    <f:selectItem itemLabel="co" itemValue="co" />
    <f:selectItem itemLabel="pi" itemValue="pi" />
    <f:selectItem itemLabel="si" itemValue="si" />
</p:selectManyMenu>

из бобов Java:

public List getTypeParId(int id){
    return this.genTypeFacade.getTypeParId(id);
} 

проблема в том, что бин List и я не могу преобразовать список в String[],

1 ответ

userReporting.getTypeParId(userReporting.selected) возвращает List, Вы не можете получить доступ List[0], вы должны использовать List#get(int index),

value="#{userReporting.getTypeParId(userReporting.selected).get(0).nomType}"

Кроме того, будьте осторожны с дженериками: лучше указать, что содержит возвращаемую коллекцию, то есть:

public List<Type> getTypeParId(int id){
     return this.genTypeFacade.getTypeParId(id);
}

Еще одно "также": ваш метод getTypeParId возвращает более 1 типа? Если да, это следует назвать getTypesParId,

Другие вопросы по тегам