Sto provando a passare l'EventBus della mia app a un widget dichiarato in un UiBinder tramite il suo costruttore. Sto usando l'annotazione @UiConstructor per contrassegnare un costruttore che accetta l'EventBus, ma non so come fare effettivamente riferimento all'oggetto dal mio codice ui.xml.passando un oggetto al costruttore di un widget definito in uibinder
Cioè, ho bisogno di qualcosa come
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>
Non ho alcun problema passando un valore statico per the WidgetThatNeedsAnEventBus e posso usare un metodo factory per creare un nuovo oggetto EventBus. Ma quello di cui ho bisogno è passare l'EventBus già esistente della mia app.
C'è un modo per fare riferimento a oggetti già esistenti in un UiBinder?
anche un buon esempio per i metodi di fabbrica: http://blog.jeffdouglas.com/2010/02/24/gwt-uibinder-passing-objects-to-widgets/ – z00bs
Non voglio creare un'istanza di un nuovo oggetto, in quanto sembra richiedere un metodo di fabbrica. Ecco un esempio diverso: diciamo che ho una stringa chiamata myString e in un file ui.xml ho dichiarato . Come posso specificare a quello che dovrebbe utilizzare il costruttore Label (String) e passare il valore di myString a quel costruttore? @UiField (provided = true) sembra promettente, ma non riesco a vedere come passare myString a un costruttore. Forse questo non è possibile con UiBinder? –
Passare una stringa: crea e annota il costruttore della tua classe ui con 'UiConstructor' e nel file ui.xml definisci un attributo con esattamente lo stesso nome dell'argomento dei costruttori. 'public @UiConstructor MyWidget (String myString)' e ' '. –
z00bs