java gwt uibinder

java - Documentación para @UiHandler



gwt uibinder (2)

El parámetro que pasa a la anotación @UiHandler es el nombre del campo apropiado al que desea asignar ese *Handler . Entonces, en este caso está asignando un ClickHandler a un Button button (en realidad, solo conocemos el nombre del campo).

En cuanto a cómo funciona esto exactamente, es parte de la magia de GWT :) Mi suposición es que, al igual que cualquier otro código relacionado con UiBinder (creo que hubo una presentación en Google IO, que mostró el código que genera UiBinder), en tiempo de compilación el compilador averigua qué va a dónde. En este ejemplo: tenemos un Button button , y tenemos un método anotado @UiHandler que tiene un parámetro ClickEvent -> que debe significar que es un ClickHandler (observe que el nombre del método no importa). Así que agreguemos algún código en tiempo de compilación (en el constructor, probablemente) que agregue ese controlador al botón. Si está interesado en una respuesta más completa, consulte la fuente: D

Pero, ¿qué se puede usar con, por ejemplo, un ListBox para obtener un evento, se selecciona un elemento? ¿Dónde en la documentación puedo ver esto?

En la referencia de GWT API . En este caso, probablemente esté buscando ListBox.addChangeHandler . Pero generalmente no encontrará el código relacionado con @UiHandler , es porque sería redundante. Siempre construye los métodos @UiHandler la misma manera:

  1. Verifica *Handler el controlador que desea agregar, digamos ChangeHandler
  2. Tiene un void onChange(ChangeEvent event) - entonces, su método necesita un parámetro ChangeEvent y debe verse así:

    @UiHandler("listBox") void whateverName(ChangeEvent event) { // ... }

Empecé a estudiar el uso de GWT en combinación con UiBuilder. Estoy un poco desconcertado acerca de cómo puede usar la @UiHandler(..) para hacer código de manejo de evento simple como está escrito en la documentación de GWT :

@UiHandler("button") void handleClick(ClickEvent e) { Window.alert("Hello, AJAX"); }

En este caso, se utiliza el método handleClick . ¿Cómo sabe para cada widget de GWT qué métodos se pueden crear con @UiHandler ? Para algunos, también puedes crear un método doClose() .

Pero, ¿qué se puede usar con, por ejemplo, un ListBox para obtener un evento, se selecciona un elemento? ¿Dónde en la documentación puedo ver esto?


Probablemente su problema esté en su método onModuleLoad:

public void onModuleLoad() { HelloWorld helloWorld = new HelloWorld("BOTAO"); // Using this way @UiHandler will not work //Document.get().getBody().appendChild(helloWorld.getElement()); // correct way RootPanel.get().add(helloWorld); }