Как получить все выбранные значения из selectManyListbox / selectManyMenu / selectManyCheckbox?
Как собрать все выбранные значения из компонентов UISelectMany, таких как h:selectManyListbox, h:selectManyMenu, h:selectManyCheckbox, p:selectManyListbox, p:selectManyMenu, p:selectManyCheckbox и т. Д. В вспомогательном компоненте?
Если кто-то может помочь с примером, это действительно поможет.
1 ответ
Решение
Как и с любым другим компонентом ввода, просто свяжите его value
Атрибут со свойством управляемого компонента. Может отображаться на List
или массив того же типа значения, который вы использовали в f:selectItem(s)
, Если тип значения не является одним из стандартных типов EL (String
, Number
или же Boolean
), то вы должны предоставить Converter
также.
Вот пример с типом значения String
:
<h:selectManyListbox value="#{bean.selectedItems}">
<f:selectItems value="#{bean.availableItems}" />
</h:selectManyListbox>
<h:commandButton value="Submit" action="#{bean.submit}" />
с
public class Bean {
private Map<String, String> availableItems; // +getter (no setter necessary)
private List<String> selectedItems; // +getter +setter
@PostConstruct
public void init() {
availableItems = new LinkedHashMap<String, String>();
availableItems.put("Foo label", "foo");
availableItems.put("Bar label", "bar");
availableItems.put("Baz label", "baz");
}
public void submit() {
System.out.println(selectedItems); // It's already set at that point.
}
// ...
}