でプロパティSelectableDataModel
を使用したい場合、実装するクラスを作成することは必須ですか? はいの場合、どのように dataTable を実装するクラスに「リンク」できますか?selection
<p:dataTable>
SelectableDataModel
質問する
151 次
1 に答える
0
いいえ、それは必要ありません。を必要とせずに行の一意の識別子を把握できるrowKey
ように、属性を指定するだけです。<p:dataTable>
SelectableDataModel
<p:dataTable value="#{bean.items}" var="item" rowKey="#{item.id}" ...>
興味がある場合、または必要な場合は、次のように実装する必要があります。
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
private List<Item> items;
private ItemDataModel itemModel;
public Bean() {
items = itemService.list();
itemModel = new ItemDataModel(items);
}
// ...
}
ItemDataModel
このように見える場所:
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();
}
}
最後にasitemModel
の代わりに使用します。items
<p:dataTable value>
<p:dataTable value="#{bean.itemModel}" var="item" ... />
于 2013-08-21T17:51:03.443 に答える