2013-09-25 4 views
0

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

<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, в списке выбора ничего нет ...

ответ

1

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

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

Кроме того, было бы хорошо, чтобы также иметь поле в вашем компоненте, который будет обрабатывать значение выбранного элемента в вашем 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... 
} 
+0

Я потерял так много времени на поиск решения, какая глупая ошибка ха-ха. И хороший совет, спасибо! –

+0

Кроме того, не забудьте использовать правильный случай, хотя и не относящийся к вашему вопросу, у меня были проблемы с использованием обычных случаев с тегами camelCase! –