2016-11-14 2 views
0

私が列挙して選択し、ドロップダウンを作成アンギュラJSではそうアクセス列挙型のプロパティは、ダウン

public enum myEnum{ 
    enum1("enumDisplayVal1"), enum2("enumDisplayVal2") 
    myEnum(String displayValue) { this.displayValue = displayValue;} 

    private String displayValue; 
    public String getDisplayValue(){return displayValue} 
} 

のように、Javaの列挙型を持っています。

<select class="multiselect" multiple="multiple" id="enumDropDown" 
    data-ng-change="update()" 
    data-ng-options="e for e in myEnumValues" 
    data-ng-model="selectedEnum"> 
    <option value="">All</option> 
    </select> 

ドロップダウンには、列挙型の実際の値であるenum1、enum2などの値が表示されます。 selectドロップダウンでenumの "displayValue"プロパティを表示するようにするにはどうすればいいですか?

私はこれは私がやってしまったものですmyEnum.values()

+0

はあなた 'enum'に' toString'をオーバーライドしようとしたことがありますか? – Mena

+0

Hmm。私はそれを試してみる。ありがとう – Imprfectluck

+0

あなたは{{myEnumValues}}のような全体のリストを印刷するなら、Nopeは@Mena – Imprfectluck

答えて

0

を使用して、角度のjsに列挙型の値を送信します。角度JS側ので、

Arrays.stream(myEnum.values()).collect(toMap(i -> i.name(), i -> i.getDisplayValue()) 

ようなenum値のマップ()を作成した:

<select class="multiselect" data-ng-change="update()" 
       data-ng-options="key as value for (key, value) in myEnumValues" 
       data-ng-model="selectedEnum"> 
       <option value="">All</option> 
    </select> 

は、別個の表示名と異なる値を有するの問題を解決しました。

+0

マップに変換せずにそれを行う方法があるかどうかわかりません。しかし、これは私が仮定する問題を解決しました。 – Imprfectluck

0

これを試してみてください:

import com.fasterxml.jackson.annotation.JsonValue; 

..... 

@JsonValue 
public String getDisplayValue(){return displayValue}