Как связать значения Enum в потоке vaadin? - PullRequest
0 голосов
/ 16 марта 2019

В моем проекте потока vaadin с использованием Springboot я столкнулся с проблемой, состоящей в том, что перечисляемые значения со списком не могут быть связаны.Я предоставил свой код ниже.Кто-нибудь здесь, кто может помочь мне?

Создание списка Combobox:

private ComboBox<Country> nationality = new CompoBox<>("Nationality");

Код привязки:

binder.forField(nationality)
    .bind(Coach::getNationality,Coach:setNationality);

1 Ответ

4 голосов
/ 16 марта 2019

Я думаю, вы пропускаете звонок setItems.Вот пример, основанный на базе проекта Vaadin Flow

package com.vaadin.starter.skeleton;

import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.combobox.ComboBox;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.data.binder.Binder;
import com.vaadin.flow.router.Route;
import com.vaadin.flow.server.PWA;

/**
 * The main view contains a button and a click listener.
 */
@Route("")
@PWA(name = "Project Base for Vaadin Flow", shortName = "Project Base")
public class MainView extends VerticalLayout {

    public MainView() {

        ComboBox<ENUM> comboBox = new ComboBox<ENUM>("Number");
        comboBox.setItems(ENUM.values());
        Binder<Bean> binder = new Binder<>();
        binder.setBean(new Bean());
        binder.bind(comboBox,Bean::getField,Bean::setField);
        Button button = new Button("Check value",
                        e-> Notification.show("Value in bean is " + binder.getBean().getField()));
        add(button,comboBox);
    }

    public enum ENUM {
        ONE,TWO,TREE
    }

    public static class Bean {
        private ENUM field;

        public ENUM getField() {

            return field;
        }

        public void setField(ENUM field) {

            this.field = field;
        }
    }
}

...