JSF/SEAM: как предварительно установить флажки в форме

У меня есть форма, в которой я должен предварительно выбрать некоторые флажки. Как это возможно с jsf/seam? В простом html вы просто добавили бы «checked» (или checked = «checked») в качестве атрибута для флажков. Но с f: selectItems я понятия не имею... также объект "SelectItem" не предоставляет никакого установщика для этого...


person Shizuma    schedule 24.11.2009    source источник


Ответы (2)


Вам нужно предварительно установить их в свойстве за атрибутом value компонента, как вы обычно делаете для каждого компонента UIInput. Вы можете сделать это в конструкторе компонента или в блоке инициализации.

Вот простой пример:

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

Бин:

private List<String> selectedItems; // +getter +setter.
private List<SelectItem> selectItems; // +getter.

public Bean() {
    // Preset the selected items.
    this.selectedItems = new ArrayList<String>();
    this.selectedItems.add("valueToBePreselected1");
    this.selectedItems.add("valueToBePreselected2");
    // Those values should be exactly the same as one of the SelectItem values.
    // I.e. the Object#equals() must return true for any of them.
}
person BalusC    schedule 24.11.2009
comment
Большое спасибо. На самом деле я уже пробовал это, и это не сработало, потому что я добавил метки флажков, а не значения;). - person Shizuma; 25.11.2009

Заполните свойство, которое вы используете в «значении», перед визуализацией страницы (например, с помощью прослушивателя фазы)

<h:selectManyCheckbox value="#{selectManyCheckBoxBean.selectedItems}">
    <f:selectItem itemLabel="India" itemValue="India" />
    <f:selectItem itemLabel="China" itemValue="China" />
    <f:selectItem itemLabel="Germany" itemValue="Germany" />
    <f:selectItem itemLabel="USA" itemValue="USA" />
</h:selectManyCheckbox>
person Bozho    schedule 24.11.2009