我可以使用枚舉值作爲UiBinder模板中的字段值嗎?我使用GWT 2.4我可以使用枚舉值作爲UiBinder模板中的字段值嗎?
像這樣的事情
<ui:with field="en" type="com.mine.courierApp.shared.PayerType" />
看起來很有希望,其中
public enum PayerType
{
Sender,
Recipient
}
,但我不能en.Sender
指枚舉值。
這有可能嗎?
我可以使用枚舉值作爲UiBinder模板中的字段值嗎?我使用GWT 2.4我可以使用枚舉值作爲UiBinder模板中的字段值嗎?
像這樣的事情
<ui:with field="en" type="com.mine.courierApp.shared.PayerType" />
看起來很有希望,其中
public enum PayerType
{
Sender,
Recipient
}
,但我不能en.Sender
指枚舉值。
這有可能嗎?
<ui:import field='com.mine.courierApp.shared.PayerType.Sender' />
或
<ui:import field='com.mine.courierApp.shared.PayerType.*' />
然後你可以使用它作爲payerType='{Sender}'
。
但UiBinder的應自動嘗試翻譯枚舉常量名到值,所以下面應該無需任何一個ui:with
工作:
<my:MyWidget payerType='Sender' />
如果MyWidget
小部件有一個public void setPayerType(PayerType type)
方法,UiBinder的應該尋找一種在PayerType
enum(來自方法的參數類型)中,枚舉值名爲Sender
(來自*.ui.xml
文件)。
如果不這樣做的用戶界面:導入枚舉類是這樣的:
<ui:import field='com.mine.courierApp.shared.PayerType.*' />
那麼你沒有得到內容輔助,它的這個擺在首位的整點。
但後來你遇到了另一個問題...
雖然你可以簡單類型{CTRL空間}來獲取枚舉值的彈出菜單,如果您使用的,比方說,bootstrap3,有各種枚舉每個都有自己的「DEFAULT」值。 ui模板編輯器會抱怨這個;即如果您開始大量使用此內容輔助功能,則需要確保導入的枚舉具有唯一的值名稱。
不幸的是,它在運行時失敗說:'錯誤:返回類com.mine.courierApp.shared.PayerType,不能用作類java.lang.String' – expert 2012-02-29 19:34:19
托馬斯,我可以問你也看看[這個問題](http://stackoverflow.com/questions/9476341/)?你對GWT內部知道很多。 – expert 2012-02-29 20:04:57
對不起,應該是'ui:import'而不是'ui:with'。我剛剛檢查了[功能的單元測試](http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/test/com/google/gwt/uibinder/測試/客戶端/ WidgetBasedUi.ui.xml#83)(你可以看看'EnumeratedLabel'那裏有一個自動將字符串轉換爲枚舉值的例子 – 2012-03-01 16:49:21