Как получить все выбранные значения из selectManyListbox / selectManyMenu / selectManyCheckbox? - PullRequest
5 голосов
/ 05 декабря 2010

Как собрать все выбранные значения из компонентов UISelectMany, таких как h: selectManyListbox, h: selectManyMenu, h: selectManyCheckbox, p: selectManyListbox, p: selectManyMenu, p: selectManyCheckbox и т. Д. В компоненте поддержки?

Если кто-то может помочь с примером, это действительно поможет.

1 Ответ

16 голосов
/ 05 декабря 2010

Как и для любого другого входного компонента, просто свяжите его атрибут 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.
    }

    // ...
}

См. также:

...