У меня есть форма, в которой я должен предварительно выбрать некоторые флажки. Как это возможно с jsf/seam? В простом html вы просто добавили бы «checked» (или checked = «checked») в качестве атрибута для флажков. Но с f: selectItems я понятия не имею... также объект "SelectItem" не предоставляет никакого установщика для этого...
JSF/SEAM: как предварительно установить флажки в форме
Ответы (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
Большое спасибо. На самом деле я уже пробовал это, и это не сработало, потому что я добавил метки флажков, а не значения;).
- 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