将 ArrayList < String> 转换为 ArrayList<SelectItem>



我有一个名为listout的ArrayList<String>,我想将其转换为ArrayList<SelectItem>。我该怎么做呢?

PS: JSF的selectItem

根据您的问题历史记录,您正在使用JSF 2。在这种情况下,知道<f:selectItem><f:selectItems>不再需要单个或SelectItem对象的集合是很好的。只是一个普通的String,甚至一个Javabean也完全可以。

private String selectedItem;
private List<String> availableItems;
// ...

<h:selectOneMenu value="#{bean.selectedItem}">
    <f:selectItems value="#{bean.availableItems}" />
</h:selectOneMenu>

在JSF 2中应该也能正常工作。

或者,一个Javabeans的集合,假设Foo具有属性idname

private Foo selectedItem;
private List<Foo> availableItems;
// ...

<h:selectOneMenu value="#{bean.selectedItem}">
    <f:selectItems value="#{bean.availableItems}" var="foo" itemValue="#{foo}" itemLabel="#{foo.name}" />
</h:selectOneMenu>

参见:

  • 我们的<selectOneMenu> wiki页面

假设您指的是JSF的SelectItem:

List<SelectItem> items = new ArrayList<SelectItem>(listout.size());
for(String value : listout){
    items.add(new SelectItem(value));
}
return items;

我不知道SelectItem是什么,所以我假设你有一个方法来转换String到它,命名为createSelectItem()。

你必须遍历字符串并填充另一个ArrayList:

ArrayList<SelectItem> out = new ArrayList<SelectItem>();
for(String str : listout) {
    out.add(createSelectItem(str));

番石榴溶液:

    Collection<SelectItem> result = Collections2.transform(
        listout, 
        new Function<String, SelectItem>(){
           @Override
           public SelectItem apply(String s) {
            return  createSelectItem(s);
    }
});

相关内容

  • 没有找到相关文章

最新更新