TokenList в 6 и 7 версиях

Здравствуйте, перехожу с 6 версии на 7 проблема с tokenList

List l=Lists.newArrayList();
l.add(“1111”);
l.add(“2222”);
tokenList.setOptionsList(l);

или

Map<String,String> map= Maps.newHashMap();
map.put(“1”, “odin”);
map.put(“2”,“dva”);
tokenList.setOptionsMap(map);

выдается ошибка

TokenList supports only EntityOptions

В 6.10 версии элементы передавались и было все нормально, как можно сделать это в 7 версии? (lookupField нормально работает))) )

TokenList в платформе 7 для выбора экземпляра сущности.

Для выбора из списка типа HashMap или List используйте OptionList или OptionGroup.

привет, может ListOptions можно чуть по подробнее? или что-то что от
options instanceof EntityOptions

наследуется

OptionsList и OptionsGroup.
В документации по ссылке выше есть пример. Отличие OptionsList и OptionsGroup только в том, что первый только вертикальный, а у второго можно задать ориентацию.
И в Cuba-sampler тоже есть примеры.

Во всяком случае, OptionsList и OptionsGroup на платформе 7 точно работают с нужными вам HashMap и List.

Делаю как в 6 версии делал: назначаю датасорсы

<tokenList id="tokenList" dataContainer="newEntitiesDc_1" property="a" position="BOTTOM" inline="true">
            <lookup optionsContainer="newEntitiesDc" multiselect="true" captionProperty="b"/>
        </tokenList>


   @Inject
    private CollectionContainer<NewEntity> newEntitiesDc;

    @Inject
    private CollectionContainer<NewEntity> newEntitiesDc_1;

по кнопке в lookup добавляю

MetaClass(name = "firstv8_NewEntity")
public class NewEntity extends BaseUuidEntity {
    @MetaProperty
    protected String a;

    @MetaProperty
    protected String b;

****

 List< NewEntity> l_NewEntity=Lists.newArrayList();
        l_NewEntity.add(new NewEntity("00","00"));
        l_NewEntity.add(new NewEntity("11","11"));
        newEntitiesDc.setItems(l_NewEntity);

потом мышкой из выпадающего списка пытаюсь выбрать одно значение
затем смотрю что выбралось

public void onButton_1Click() {
 System.out.println( newEntitiesDc_1.getItems());

и ничего нет, почему? (но компонент действительно не запоминает что я выбирал)? что и где можно посмотреть, подскажите пожалуйста

Build #CS-183.9.1, built on April 17, 2019
JRE: 1.8.0_152-release-1343-b28 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 7 6.1```

Не покидает чувство, что вы пытаетесь использовать tokenList не по назначению.
tokenList дает возможность простого выбора сущностей для множественного атрибута сущности.
Т.е. если по вашему фрагменту

<tokenList id="tokenList" dataContainer="newEntitiesDc_1" property="a" position="BOTTOM" inline="true">
            <lookup optionsContainer="newEntitiesDc" multiselect="true" captionProperty="b"/>
        </tokenList>

то у вас выбор значений идет из newEntitiesDc, а выбранные экземпляры сущностей помещаются в атрибут a, сущности из newEntitiesDc_1. Соответственно, атрибут a должен быть коллекцией из NewEntity. А он у вас, судя по всему, String.
Вы даете в tokenList выбрать экземпляры класса NewEntity и хотите, чтобы результат выбора был добавлен в атрибут String.
Не понимаю, что вы пытаетесь сделать с помощью tokenList, но пример проекта в приложении.
Если вам не надо заполонять множественный реквизит некой сущности, а достаточно получить список выбранных опций, то зачем tokenList, если можно использовать OptionsList
tokenList_7.zip (74.0 КБ)

1 симпатия

у меня на подобие такого: нажимаю на кнопку “…” получаю дерево объектов , выбираю объекты и они попадают в tokenList, а если по комбобоксу то там просто список всех объектов.

Все равно не получается наладить работу компанента вот черновик tokenlist.zip (98.7 КБ)
если кто сможет подскажите что там делаю не так?

Посмотрите пример выше, почитайте документацию, просмотре Cuba-sampler и все получится.
А если не получится - оформляйте пост в соответствии с правилами форума.

Cuba-sampler как и в примере выше контейнер с данными заполняется от запроса,

а в моем случае

@Subscribe
    protected void onInit(InitEvent event) {
        // InstanceContainer initialization. It is usually done automatically if the screen is
        // inherited from StandardEditor and is used as an entity editor.
        Order order = metadata.create(Order.class);
        orderDc.setItem(order);
    }

если делаю orderDc.setItem(order); то выдается что такого элемента нет!
буду копать дальше ))) спасибо за пример

Посмотрел ваш пример, перенес все из public class ProductsEdit extends StandardEditor<Products>
в

@UiController("tokenlist7_NewScreen")
@UiDescriptor("new-screen.xml")
@EditedEntityContainer("productsDc")
@LoadDataBeforeShow
public class NewScreen extends Screen {
        @Inject
        private CollectionContainer<NewEntity> tokenDc;
        @Inject
        private TokenList<NewEntity> tokenList;

tokenList_7_with_error.zip (83.5 КБ)

компонент перестал работать

Придется отказаться и делать колхоз используя vaadin компоненты
(не понятно зачем разработчики так делают), в версии 6 компонент был понятнее