Vaadin8 Декларативный не работает должным образом с NativeSelect

Я использовал следующие 4 строки кода для успешной настройки NativeSelect в Java-веб-приложении vaadin, и меню NativeSelect было создано и заполнено моим перечислением (ApplicationStatus).

Когда я попытался сделать то же самое в декларативном файле, появляется меню NativeSelect и оно пустое.

class Application extends VerticalLayout
{
public Application()
{
..
    //ApplicationStatus is an enum, these exact four lines of code work fine without declarative

    private NativeSelect<ApplicationStatus> categorySelect = new NativeSelect<ApplicationStatus>("Application Status");

    categorySelect.setItems( ApplicationStatus.values());
    categorySelect.setItemCaptionGenerator( ApplicationStatus::getName );
    categorySelect.setSelectedItem(ApplicationStatus.ACTIVE);

..
}

Вот декларативный HTML-файл (ATTEMPT1) // меню отображается пустым

...

    <row>
      <column><vaadin-label><strong>Decline Reason</strong></vaadin-label></column>
    <column><v-native-select _id="categorySelect"></v-native-select></column>
    </row>

...

**Here is the Declarative  HTML FILE  (ATTEMPT2)** //I tried populating it inline but the result was that the menu now has the word "Duplicate" showing 5 times.
...
        <row>
         <column><vaadin-label><strong>Change Category</strong></vaadin-label></column>
         <column><vaadin-native-select _id="categorySelect">
                <option value="D">Decline</option>
                <option value="W">Waitlist</option>
                <option value="R">Rejected by VCS</option>
                <option value="P">Prospect</option>
                <option value="C">Duplicate</option>
                </vaadin-native-select></column>
        </row>

...

1 ответ

Вы не включили исходный код Java для декларативной реализации, так что просто попробуем.

Объявите переменную NativeSelect в объекте класса, который используется для определения макета, в котором он находится. Позвольте дизайну связать переменную с декларативным с помощью предоставленного вами _id. Затем заполните элементы управления перечислениями и укажите значение по умолчанию, как вы делали ранее.

NativeSelect<ApplicationStatus> categorySelect;

public DemoView()
{
    Design.read( "DemoView.html", this );

    categorySelect.setItems( ApplicationStatus.values() );
    categorySelect.setSelectedItem( ApplicationStatus.ACTIVE );

Это создает элемент управления select с нужными заголовками и отображениями enum.

Я проследил часть кода Vaadin, и я не уверен, что есть способ заполнить элементы управления перечислениями просто с помощью декларативного метода.

Другие вопросы по тегам