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, и я не уверен, что есть способ заполнить элементы управления перечислениями просто с помощью декларативного метода.