【问题标题】:Can't bind SelectItem list to <f:selectItem无法将 SelectItem 列表绑定到 <f:selectItem
【发布时间】:2013-09-25 22:14:16
【问题描述】:

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

【问题讨论】:

    标签: jsf icefaces selectonemenu


    【解决方案1】:

    使用&lt;f:selectItems&gt; 代替&lt;f:selectItem&gt;。注意前一个组件末尾的 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...
    }
    

    【讨论】:

    • 我浪费了很多时间寻找解决方案,多么愚蠢的错误哈哈。和好的提示,谢谢!
    • 另外,尽管与您的问题无关,但请记住使用正确的大小写,我在使用普通大小写与 camelCase 标签时遇到了麻烦!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2013-03-18
    • 1970-01-01
    相关资源
    最近更新 更多