Я пытаюсь передать EventBus моего приложения в виджет, объявленный в UiBinder через его конструктор. Я использую аннотацию @UiConstructor для обозначения конструктора, который принимает EventBus, но я не знаю, как на самом деле ссылаться на объект из моего кода ui.xml.Передача объекта конструктору виджета, определенного в uibinder
То есть, мне нужно что-то вроде
WidgetThatNeedsAnEventBus.java
public class WidgetThatNeedsAnEventBus extends Composite
{
private EventBus eventBus;
@UiConstructor
public WidgetThatNeedsAnEventBus(EventBus eventBus)
{
this.eventBus = eventBus;
}
}
TheUiBinderThatWillDeclareAWTNAEB.ui.xml
<g:HTMLPanel>
<c:WidgetThatNeedsAnEventBus eventBus=_I_need_some_way_to_specify_my_apps_event_bus_ />
</g:HTMLPanel>
У меня нет никаких проблем, проходящих статического значение WidgetThatNeedsAnEventBus, и я могу использовать фабричный метод для создания нового объекта EventBus. Но мне нужно передать уже существующий EventBus моего приложения.
Есть ли способ ссылаться на уже существующие объекты в UiBinder?
также является хорошим примером для фабричных методов: http://blog.jeffdouglas.com/2010/02/24/gwt-uibinder-passing-objects-to-widgets/ – z00bs
Я не хочу создавать экземпляр нового объекта, поскольку это похоже на фабричный метод. Вот другой пример: допустим, у меня есть строка, называемая myString, и в файле ui.xml у меня есть объявленный . Как я могу указать этому , что он должен использовать конструктор Label (String) и передать значение myString этому конструктору? @UiField (при условии = true) выглядит многообещающим, но я не вижу, как передать myString в конструктор. Возможно, это невозможно с UiBinder? –
Передача строки: создать и аннотировать конструктор вашего класса ui с помощью 'UiConstructor' и в файле ui.xml определить атрибут с тем же именем, что и аргумент конструкторов. 'public @UiConstructor MyWidget (String myString)' и ' '. –
z00bs