如何从支持bean中的UISelectMany组件中收集所有选定值,例如h:selectManyListbox,h:selectManyMenu,h:selectManyCheckbox,p:selectManyListbox,p:selectManyMenu,p:selectManyCheckbox等?
如果有人可以提供帮助,那会非常有帮助。
答案 0 :(得分:16)
与其他所有输入组件一样,只需将其value
属性与托管bean属性绑定即可。它可以映射到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.
}
// ...
}