0

我正在使用 IceFaces 组件,我试图用一些对应于 MangedBean 属性的值填充选择。

<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 页面时,选择列表中没有任何内容......


使用<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...
}
4

1 回答 1

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...
}
于 2013-09-25T22:23:03.783 回答