Как заполнить поле selectManyListbox из базы данных

#jsf

#jsf

Вопрос:

Я хотел бы знать, как я могу заполнить h:selectManyListbox из базы данных, т. Е. не с помощью статических параметров.

Комментарии:

1. Вас не устраивает ответ от @BalusC?

Ответ №1:

Используйте <f:selectItems> в сочетании со свойством, которое возвращает List<SelectItem> , или когда вы уже используете JSF 2.0, a List<SomeObject> .

 <h:selectManyListbox value="#{bean.selectedItems}">
    <f:selectItems value="#{bean.selectItems}" />
</h:selectManyListbox>
  

Вы можете загрузить элементы из базы данных в конструкторе bean или @PostConstruct методе.

 public class Bean {

    private List<String> selectedItems;
    private List<SelectItem> selectItems;

    public Bean() {
        selectItems = new ArrayList<SelectItem>();

        // Fill select items during Bean initialization/construction.
        // Below is just an example, you could replace this by getting a list
        // of some objects from DB and creating new items in a loop.
        selectItems.add(new SelectItem("value1", "label1"));
        selectItems.add(new SelectItem("value2", "label2"));
        selectItems.add(new SelectItem("value3", "label3"));
    }

    // Getters, etc
}