无法将SelectItem列表绑定到

时间:2013-09-25 22:14:17

标签: jsf icefaces selectonemenu

我正在使用IceFaces组件,我正在尝试用一些与MangedBean属性相对应的值来填充select。

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

listeCategoriesItem是StockManagedBean的一个属性,是SelectItem的ArrayList。

@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的值,它们都是正确的。我还测试了getter中列表的值,它们也是正确的,但是当我加载我的html页面时,选择列表中没有任何内容......

1 个答案:

答案 0 :(得分: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>

在您的托管bean中:

@ManagedBean
public class StockManagedBean {
    private String selectedCategory;
    //rest of your code
    //getters and setters...
}