Обычный способ создания и заполнения элементов selectOneMenu
будет следующим:
private String selectedItem; // +getter +setter
private List<SelectItem> selectItems; // +getter
public Bean() {
selectItems = new ArrayList<SelectItem>();
for (Entity entity : getYourEntities()) {
selectItems.add(new SelectItem(entity.getValue(), entity.getLabel()));
}
}
С учетом следующего (вы можете легко разделить <h:
с помощью <ice:
):
<h:selectOneMenu value="#{bean.selectedItem}">
<f:selectItems value="#{bean.selectItems}" />
</h:selectOneMenu>
Вместо значения String
вы также можете использовать любой Number
(Integer
, Long
и т. Д.), Поскольку JSF имеет встроенные преобразователи для этого. Но если вы хотите использовать целые объекты в качестве значения элемента, вам нужно создать Converter
. Это подробно описано в этой статье .