Работает только для меня.Возможно, ваша логика загрузки данных неверна (например, вы делаете это в методе получения) или метод equals()
объекта, стоящего за rowKey
, не работает.
Вот самодостаточный пример запуска, так чтоВы можете, по крайней мере, зафиксировать свою собственную ошибку:
<h:form>
<p:dataTable value="#{bean.items}" var="item" selection="#{bean.item}" rowKey="#{item.id}">
<p:column selectionMode="single" />
<p:column headerText="id">#{item.id}</p:column>
<p:column headerText="value">#{item.value}</p:column>
</p:dataTable>
<p:commandButton value="submit" action="#{bean.submit}" />
</h:form>
с
@ManagedBean
@ViewScoped
public class Bean implements Serializable {
private List<Item> items;
private Item item;
@PostConstruct
public void init() {
items = new ArrayList<>();
items.add(new Item(1L, "one"));
items.add(new Item(2L, "two"));
items.add(new Item(3L, "three"));
}
public void submit() {
System.out.println(item);
}
public List<Item> getItems() {
return items;
}
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
}
, где Item
имеет только свойства Long id
и String value
.