2012-02-29 1 views
9

Могу ли я использовать значения enum как значения полей внутри шаблона UiBinder? Я использую GWT 2,4Могу ли я использовать значения enum как значения полей внутри шаблона UiBinder?

Что-то вроде этого

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

выглядит многообещающим, где

public enum PayerType 
{ 
    Sender, 
    Recipient 
} 

, но я не могу относиться к значениям перечисления на en.Sender.

Возможно ли это?

ответ

12
<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 следует искать значение перечисления с именем Sender (из файла *.ui.xml) в перечислении PayerType (из типа аргумента метода).

+0

К сожалению, он не работает во время выполнения: 'ERROR: возвращает класс com.mine.courierApp.shared.PayerType, не может использоваться как класс java.lang.String' – expert

+0

Томас, могу я попросить вас также взглянуть на [этот вопрос] (http://stackoverflow.com/questions/9476341/)? Вы много знаете о внутренних компонентах GWT. – expert

+0

Извините, это должно быть 'ui: import' вместо' ui: with'. Я только что проверил в [unit-tests для этой функции] (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.*' /> 

, то вы не получаете контент-помощь, что весь смысл этого в первую очередь.

Но тогда вы столкнетесь с другой проблемой ...

Хотя вы можете просто тип {Ctrl-пробел}, чтобы получить всплывающее меню значения перечисления, если вы используете, скажем, bootstrap3, существуют различные перечисляет, что каждый из них имеет свое значение «ПО УМОЛЧАНИЮ». Редактор шаблона ui будет жаловаться на это; т. е. если вы начнете широко использовать эту функцию поддержки контента, вам необходимо убедиться, что импортированные перечисления имеют уникальные имена значений.