2010-06-27 836 views
5

Estoy tratando de usar uiBinder. Seguí el tutorial proporcionado por google, pero no sé por qué clickevent no funciona. Quiero contar el número de clics y mostrarlo en el lapso, no funciona, también puse window.alert pero parece que el controlador de eventos no se llama en absoluto. ¿Alguien puede ayudarme? ¡Hace un par de horas que estoy trabajando pero no puedo encontrar el problema!uiBinder en Button Clickevent

Muchas gracias

P. S. A continuación se muestra el código


<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
    xmlns:g="urn:import:com.google.gwt.user.client.ui"> 
    <ui:style> 
    </ui:style> 
    <g:HTMLPanel> 
    <table> 
     <tr> 
      <td><img ui:field='imgPrd'/></td> 
      <td> 
       <span ui:field='lblNum'></span> 
       <g:Button ui:field='btnAdd'></g:Button> 
      </td> 
     </tr> 
    </table> 
    </g:HTMLPanel> 


public class uiProductList extends Composite { 

@UiField Button btnAdd; 
@UiField ImageElement imgPrd; 
@UiField SpanElement lblNum; 

int count; 
private static uiProductListUiBinder uiBinder = 
GWT.create(uiProductListUiBinder.class); 

interface uiProductListUiBinder extends UiBinder<Widget, 
uiProductList> { 
} 

public uiProductList() { 
    initWidget(uiBinder.createAndBindUi(this)); 
} 


@UiHandler("btnAdd") 
void handleClick(ClickEvent e) { 
    Window.alert("test"); 
    count++;  
    lblNum.setInnerText(Integer.toString(count)); 
} 

} 
+0

¿El código de trabajo si se agrega un controlador de clic del "regular", con 'addClickHandler()'? –

+0

¿Estás seguro de que estás cerrando la etiqueta ''? Parece que falta en el código anterior. –

Respuesta

6

Debe añadir correctamente el widget en el panel de raíz. Utilice

RootPanel.get(). Add (uiProduct);

De lo contrario, los controladores no se han inicializado.

2

que tenían exactamente el mismo problema, y ​​aquí es la conclusión:

RootPanel.getBodyElement().appendChild(uiProduct.getElement()); - NO TRABAJO

RootPanel.get().add(uiProduct); - trabajando bien