Здравствуйте,
Вы можете использовать подход с назначением компоненту GroupPropertyValueFormatter. К сожалению, этот API не документирован и может быть удалён или сильно изменён в будущем.
Например, в стандартном экране списка клиентов мы можем реализовать это так:
public class ClientBrowse extends AbstractLookup {
@Inject
private GroupTable<Client> clientsTable;
@Inject
private MetadataTools metadataTools;
@Inject
private GroupDatasource<Client, UUID> clientsDs;
@Override
public void init(Map<String, Object> params) {
super.init(params);
// получить реализацию Vaadin компонента из CUBA компонента
CubaGroupTable groupTable = clientsTable.unwrap(CubaGroupTable.class);
// назначить свой форматтер для ячеек групп
groupTable.setGroupPropertyValueFormatter((groupId, value) -> {
@SuppressWarnings("unchecked")
GroupInfo<MetaPropertyPath> groupInfo = (GroupInfo<MetaPropertyPath>) groupId;
MetaPropertyPath propertyPath = groupInfo.getProperty();
// получить стандартное строковое представление атрибута, по которому группируем
String formattedValue = metadataTools.format(value, propertyPath.getMetaProperty());
// получить стандартный счётчик элементов группы, здесь вы можете вычислить другое значение
// например, используя clientsDs.getGroupItemIds(groupInfo) и фильтрацию полученной коллекции Id
int defaultCount = clientsDs.getGroupItemsCount(groupInfo);
return String.format("%s - (%d)", formattedValue == null ? "" : formattedValue, defaultCount);
});
}
}