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