Jsf SelectableDataModel在<;上是否为必填项;p:数据表选择>;;我如何实现它

Jsf SelectableDataModel在<;上是否为必填项;p:数据表选择>;;我如何实现它,jsf,primefaces,Jsf,Primefaces,当我想在我的上使用selection属性时,是否必须创建一个实现SelectableDataModel的类?如果是,如何将我的数据表与实现SelectableDataModel的类“链接”?否,这不是必需的。您只需指定rowKey属性,这样就可以计算出行的唯一标识符,而不需要SelectableDataModel <p:dataTable value="#{bean.items}" var="item" rowKey="#{item.id}" ...> 最后使用itemModel而

当我想在我的
上使用
selection
属性时,是否必须创建一个实现
SelectableDataModel
的类?如果是,如何将我的数据表与实现
SelectableDataModel
的类“链接”?

否,这不是必需的。您只需指定
rowKey
属性,这样
就可以计算出行的唯一标识符,而不需要
SelectableDataModel

<p:dataTable value="#{bean.items}" var="item" rowKey="#{item.id}" ...>
最后使用
itemModel
而不是
items
作为

<p:dataTable value="#{bean.itemModel}" var="item" ... />

public class ItemDataModel extends ListDataModel<Item> implements SelectableDataModel<Item> {  

    public ItemDataModel() {
        // Default c'tor, keep alive.
    }

    public ItemDataModel(List<Item> data) {
        super(data);
    }

    @Override
    public Item getRowData(String rowKey) {
        List<Item> items = (List<Item>) getWrappedData();

        for (Item item : items) {
            if (item.getId().equals(rowKey)) {
                return item;
            }
        }

        return null;
    }

    @Override
    public Object getRowKey(Item item) {
        return item.getId();
    }

}
<p:dataTable value="#{bean.itemModel}" var="item" ... />