2017-10-03 30 views
0

次の4行のコードを使用して、vaadin java WebアプリケーションでNativeSelectを正常に設定し、NativeSelectメニューが作成され、列挙型(ApplicationStatus)で作成されました。Vaadin8宣言がNativeSelectで期待通りに動作しない

宣言的なファイルで同じことをしようとすると、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> 

。 ..

答えて

0

宣言的な実装にはJavaソースは含まれていないので、ちょうどそれを刺すようにします。

NativeSelect変数が存在するレイアウトを定義するために使用されるクラスオブジェクトで宣言します。指定した_idを使用して、変数を宣言にバインドさせます。その後、コントロールに列挙型を設定し、以前と同じようにデフォルトを指定します。

NativeSelect<ApplicationStatus> categorySelect; 

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

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

これは、目的のキャプションと列挙型マッピングを持つ選択コントロールを生成します。

enter image description here

私はVaadinコードの一部をトレースして、私は純粋に宣言型の方法を使用して列挙型を持つコントロールを作成する方法があるかわかりません。

+0

ありがとうございました - それを解決しました! – user8716782

関連する問題