Не удается привязать список SelectItem к ‹f:selectItem

Я использую компоненты IceFaces и пытаюсь заполнить выбор некоторыми значениями, соответствующими свойству MangedBean.

<h:form>
    <ice:selectOneMenu size="1" style="width: 180px">
        <f:selectItem value="#{stockManagedBean.listeCategoriesItem}"></f:selectItem>
    </ice:selectOneMenu>
</h:form>

listeCategoriesItem является свойством StockManagedBean и является ArrayList SelectItem.

@ManagedBean
public class StockManagedBean {
    CategorieDAO categorieDAO;
    List<SelectItem> listeCategoriesItem;

    public StockManagedBean() {
        categorieDAO = new CategorieDAO();
        listeCategoriesItem = new ArrayList<SelectItem>();    
        List<Categorie> listeCategories = categorieDAO.selectAllCat();
        for(Categorie categorie: listeCategories) {
            listeCategoriesItem.add(new SelectItem(categorie.getCatId(), categorie.getCatNom()));
        }
    }

public List<SelectItem> getListeCategoriesItem() {
    return listeCategoriesItem; 
}

public void setListeCategoriesItem(List<SelectItem> listeCategoriesItem) {
    this.listeCategoriesItem = listeCategoriesItem;
}
}

Я проверил значения, полученные от моего DAO, и все они верны. Я также проверил значения списка в геттере, и они также верны, но когда я загружаю свою html-страницу, в списке выбора ничего нет...


person Community    schedule 25.09.2013    source источник


Ответы (1)


Используйте <f:selectItems> вместо <f:selectItem>. Обратите внимание на s в конце первого компонента.

<ice:selectOneMenu size="1" style="width: 180px">
    <f:selectItems value="#{stockManagedBean.listeCategoriesItem}" />
</ice:selectOneMenu>

Кроме того, было бы хорошо также иметь поле в вашем bean-компоненте, которое будет обрабатывать значение выбранного элемента в вашем selectOneMenu.

<ice:selectOneMenu size="1" style="width: 180px"
    value="#{stockManagedBean.selectedCategory}">
    <f:selectItems value="#{stockManagedBean.listeCategoriesItem}" />
</ice:selectOneMenu>

И в вашем управляемом компоненте:

@ManagedBean
public class StockManagedBean {
    private String selectedCategory;
    //rest of your code
    //getters and setters...
}
person Luiggi Mendoza    schedule 25.09.2013
comment
Я потерял так много времени на поиск решения, что за глупая ошибка, ха-ха. И хороший совет, спасибо! - person ; 26.09.2013
comment
Кроме того, не забудьте использовать правильный регистр, хотя это и не связано с вашим вопросом, у меня были проблемы с использованием тегов обычного регистра по сравнению с тегами camelCase! - person Narayana Nagireddi; 26.09.2013