2012-02-29 2 views
9

UiBinderテンプレートのフィールド値として列挙型の値を使用できますか?私はこのUiBinderテンプレートのフィールド値としてenum値を使用できますか?

<ui:with field="en" type="com.mine.courierApp.shared.PayerType" /> 

よう

何かが、有望に見えるところ

public enum PayerType 
{ 
    Sender, 
    Recipient 
} 

が、私はen.Senderで列挙型の値を参照することはできませんGWT 2.4を使用しています。

はそれも可能ですか?

答えて

12
<ui:import field='com.mine.courierApp.shared.PayerType.Sender' /> 

または

<ui:import field='com.mine.courierApp.shared.PayerType.*' /> 

そして、あなたはpayerType='{Sender}'として使用することができます。

しかしUiBinderサンプルメッセージは自動的に値に列挙定数名を変換しようとする必要があり、その次はui:withを必要とせずに動作するはずです:MyWidgetウィジェットがpublic void setPayerType(PayerType type)メソッドを持っている

<my:MyWidget payerType='Sender' /> 

場合、UiBinderサンプルメッセージを探さなければなりません(メソッドの引数の型から)PayerType列挙中(*.ui.xmlファイルから)Senderという名前の列挙型の値。

+0

残念ながら、実行時にエラーが発生します: 'ERROR:クラスcom.mine.courierApp.shared.PayerTypeを返します。クラスjava.lang.Stringとして使用できません ' – expert

+0

トーマス、もう一度見てもらえますか? [この質問](http://stackoverflow.com/questions/9476341/)?あなたはGWT内部についてたくさん知っています。 – expert

+0

申し訳ありませんが、それは 'ui:with'ではなく' ui:import'でなければなりません。私は[機能のユニットテスト](http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/test/com/google/gwt/uibinder/)にチェックを入れました。 test/client/WidgetBasedUi.ui.xml#83)(文字列を列挙型の値に自動的に変換する例については、 'EnumeratedLabel'を見てください) –

0

あなたがいないUIを行う場合は、次のように列挙型クラスをインポートします。

<ui:import field='com.mine.courierApp.shared.PayerType.*' /> 

は、あなたが得ることはありません、コンテンツアシストた最初の場所でこれの全体のポイント。

しかし、その後、あなたは別の問題が発生した...

あなたは、たとえば、bootstrap3を使用している場合は、列挙型の値のポップアップメニューを取得するためのシンプルなタイプ{CTRL-スペース}、さまざまながありますすることができますが、列挙型にはそれぞれ独自の「DEFAULT」値があります。 uiテンプレートエディタはそれに不満を持ちます。つまり、このコンテンツアシスト機能を大量に使用する場合は、インポートされた列挙体に固有の値の名前が付いていることを確認する必要があります。

関連する問題